cache control no working

i have the following lines of code below in my PHP page to control caching of my pages.  however I ran some tests to test cache control and im told i dont have any cache control setup...

I using Acunetix's Web Vulnerability Scanner.

Have I set my cache control incorrectly below?

$offset = 3600 * 24;
 
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
header('Cache-Control: max-age=3600, must-revalidate');
header('Expires: '.gmdate('D, d M Y H:i:s',time() + $offset).' GMT');

Open in new window

LVL 16
ellandrdAsked:
Who is Participating?
 
nizsmoConnect With a Mentor DeveloperCommented:
Sorry i misread you wanted to refresh your page every 2 seconds.

however the meta tag for cache expiring should work, combined with some php code to set the date of expiry to what you want (after 3600 minutes).

More on the expire metatag here:
http://www.i18nguy.com/markup/metatags.html
0
 
grahamnonweilerCommented:
The following lines must be at the top of your scripts, either the first 3 lines or if you are using session control the first three lines immediately after your session start call. Additionally, it could be that your webserver is also sending cache control statements which are conflicting - however - the below statements are generic enough to handle such a situation.

header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

There is no real need to include a date last modified as the receiving browser/proxy could be misconfigured date wise and this would then cause conflicts. Best to simply prevent all caching regardless of date modified, which is what the above headers achieve.

Also remember PHP by default does not buffer output, so "header" must be used as early as possible in any of your scripts and ideally the first few lines.
0
 
nizsmoDeveloperCommented:
ellandrd,

what is your goal?
0
Cloud Class® Course: Microsoft Exchange Server

The MCTS: Microsoft Exchange Server 2010 certification validates your skills in supporting the maintenance and administration of the Exchange servers in an enterprise environment. Learn everything you need to know with this course.

 
ellandrdAuthor Commented:
wait 2 secs - i want to cache my pages not, not cache them like your lines of code do..
0
 
grahamnonweilerCommented:
So you want to reload the page after 2 seconds?

Remember that images and other static data such as Javascript and CSS is always cached by the browser and can not be controlled by server side scripts.
0
 
nizsmoDeveloperCommented:
Try put this (html) at the top of your page (either echo or put in your html section of the code) to disable caching:
<META HTTP-EQUIV ="Expire" CONTENT ="0">

and to reload page after 2 seconds use this code:

<?php
$redirector = "<meta HTTP-EQUIV=\"refresh\" content=2;url=\"YOUR_PAGE.php\">";
echo $redirector;
?>

change YOUR_PAGE.php to whatever your page is called (filename).

Hope this helps.
0
 
ellandrdAuthor Commented:
>>So you want to reload the page after 2 seconds?

No I dont want to reload or refresh my page every 2 seconds.

I want to cache my page and any elements within it for X amount of time.  when that time is up, re-validate page...
0
 
nizsmoDeveloperCommented:
<?php
$redirector = "<meta HTTP-EQUIV=\"refresh\" content=2;url=\"YOUR_PAGE.php\">";
echo $redirector;
?>
This will refresh every 2 seconds, provided your YOUR_PAGE.php is replaced with the actual script name.

To set the cache to expire at a certain time, something like this:
<meta http-equiv="Expires" content="date">

and replace 'date' with whatever you want to expiry date to be, EG:
<META HTTP-EQUIV="expires" CONTENT="Wed, 09 Dec 2008 08:21:57 GMT">
0
 
ellandrdAuthor Commented:
i want to cache my pages and set them to expire after X 3600 minutes.  all of the above so far force not to cache or fresh the page stupidly
0
 
ellandrdAuthor Commented:
nizsmo

isnt the code i have above do this?  i want to know if it is all correct - please reread my first comments again
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.