2011-07-25 76 views
8

運行螢火它給我下面的標題信息高速緩存控制和過期標頭PHP

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 

任何人都知道爲什麼我的頭是不是當我設置我的頭

$offset = 60 * 15; 

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

然而識別?

回答

3

試試這個

<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")); ?>"> 

或設置htaccess文件頭。 你還需要檢查緩存CONFIGRATION您的阿帕奇配置文件

+1

This is close。但是,您應該使用gmdate()而不是date()。 –

18

我知道的幾個版本前,螢火蟲有問題,所有的請求都200,而不是304。這裏是我的代碼,我使用的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 M Y H: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 M Y H:i:s', time() + (60*60*24*45)) . ' GMT'); 
    // rest of the code 
    ?>