Cache Management and Header Expiration for PHP

I set my headers

$offset = 60 * 15; header("Expires: " . gmdate("D, d MYH:i:s", time() + $offset) . " GMT"); header("Cache-Control: max-age=$offset, must-revalidate"); 

However, when starting FireBug it gives me the following header information

 HTTP/1.1 200 OK Date: Mon, 25 Jul 2011 12:15:12 GMT Server: Apache/2.2.11 (Win32) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8i PHP/5.2.9 X-Powered-By: PHP/5.2.9 Expires: Sat, 01 Jan 2000 00:00:01 GMT Cache-Control: post-check=0, pre-check=0, max-age=0 Pragma: no-cache Last-Modified: Mon, 25 Jul 2011 12:15:13 GMT Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html 

Does anyone know why my headers are not recognized?

+8
php caching cache-control
source share
2 answers

I know that several versions ago Firebug had problems, and all requests were 200 instead of 304. Here is my code that I use for css:

  <?php if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) { $if_modified_since = preg_replace('/;.*$/', '', $_SERVER['HTTP_IF_MODIFIED_SINCE']); } else { $if_modified_since = ''; } $mtime = filemtime($_SERVER['SCRIPT_FILENAME']); $gmdate_mod = gmdate('D, d MYH:i:s', $mtime) . ' GMT'; if ($if_modified_since == $gmdate_mod) { header("HTTP/1.0 304 Not Modified"); exit; } header("Last-Modified: $gmdate_mod"); header('Content-type: text/css'); header('Expires: ' . gmdate('D, d MYH:i:s', time() + (60*60*24*45)) . ' GMT'); // rest of the code ?> 
+18
source share

try it

 <META HTTP-EQUIV="Pragma" CONTENT="private"> <META HTTP-EQUIV="Cache-Control" CONTENT="private, max-age=5400, pre-check=5400"> <META HTTP-EQUIV="Expires" CONTENT="<?php echo date(DATE_RFC822,strtotime("1 day")); ?>"> 

or set the headers in the htaccess file. You also need to check apachi configuration file for cache configuration

+3
source share

All Articles