I am pretty sure this has to do with the headers that are being sent with your pages. PHP generated pages don't send 'expires', cache-control', 'last-modified' or 'content-length' unless you are using sessions. If you are using Sessions then in the php.ini file will have the following entry:
session.cache_limiter = nocache. This means that PHP is sending headers that tell the browser not to cache the page, thus you have to reload it each time.
This can also be set to private or public which will send some of the required headers so that your page will not need to be refreshed each time.
If you aren't using sessions then you should send the proper headers yourself by doing the following before any output is sent to the browser (I've just thrown in some example numbers):
/
**This is the offset in seconds. Currently set to 3 days
/
$cache = 60 60 24 3;
/ Create the Expires header. */
$expires = "Expires: " . gmdate( "D, d M Y H:i:s", time() + $cache ) . " GMT";
/ Create the Cache-Control header. /
$cacheControl = "Cache-Control: max-age=" . 600 . ", must-revalidate"; /600 is ten minutes /
/ Create the last-modifed header/
$lastModified = "Last-Modified: ". gmdate( "D, d M Y H:i:s", @filemtime(PUTYOURFILEHERE) ) . " GMT";
/ Send the headers before any output /
header($expires);
header($cacheControl);
header($lastModified);
If you are using output buffering you can also send the content-length header.
Do not send headers if you are using sessions as PHP sends it's own headers when sessions are being used.
To check what headers my pages are sending out I do the following when logged into my user account via telnet:
username% telnet www.yourdomain.com 80
--hit enter
--type in:
HEAD / HTTP/1.0
or
HEAD /path/to/page/jobs.html HTTP/1.0
etc
--hit enter twice and you should see the head elements.
You can also check to see if your caching headers are correct by going to:
http://www.web-caching.com/cacheability.html
Hope this helps,
Trevor DeVore
Blue Mango Multimedia