Jag har knappat ihop lite kod för en liknande grej tidigare.
$lastmodts är unix timestamp (alltså sekunder sedan 1970, 4 bytes) för senaste uppdatering. Måste inte vara från filemtime(), kan lika gärna t.ex. hämtas från databasen. Man kan även gå direkt på att skapa en datum/tid-sträng (
$lastmod), men den måste i så fall vara rätt formaterad.
PHP-kod:
<?php
$lastmodts=filemtime('file.ext');
$lastmod=gmdate('D, d M Y H:i:s',$lastmodts).' GMT';
if(isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && $_SERVER['HTTP_IF_MODIFIED_SINCE']==$lastmod)
{
header('HTTP/1.1 304 Not Modified');
die();
}
header('Last-Modified: '.$lastmod);
header('Cache-Control: public');
header('Pragma: public');
?>
Koden måste förstås ligga högt upp i skriptet innan något skickas till webbläsaren.
Eventuellt behöver man även lägga till en rad sist i .htaccess:
RewriteRule .* - [E=HTTP_IF_MODIFIED_SINCE:%{HTTP:If-Modified-Since}]
Alternativt kan man behöva använda
apache_request_headers() istället för
$_SERVER, beroende på hur PHP är installerat.