$lastModified = time() + 30;
header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $lastModified) . ' GMT'); 此行设置后,会去服务器检查是否过期(文件是否修改过),如果没过期,就取本地文件(服务器需要返回header)
header('Expires: ' . gmdate('D, d M Y H:i:s', $lastModified) . ' GMT');   此行设置后,不再去服务器检查是否过期,直接取本地文件。
header('Cache-Control: max-age=1');  (相对于本地时间 )

还有一个Etag,是比较字符串,而不是时间。

下面这段代码是禁止点后退后,缓存.

header('Expires: Thu, 01 Jan 1970 00:00:00 GMT');

// HTTP/1.1
header('Cache-Control: private, no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0, max-age=0', false);

ps

header("Content-Type: application/json");//有时要加上这句,不然不起作用(看nginx配置)

 

<?php
// 这是一个缓存测试  
$cache_time = 60*10; //十分钟缓存
$modified_time = @$_SERVER['HTTP_IF_MODIFIED_SINCE']; 
if( strtotime($modified_time)+$cache_time > time() ){ 
    header("HTTP/1.1 304"); 
    exit; 
} 
header("Last-Modified: ".gmdate("D, d M Y H:i:s", time() )." GMT"); 
header("Content-Type: application/json");//有时要加上这句,不然不起作用(看nginx配置) 
 echo "<br />"; echo date('Y-m-d H:i:s',time()); echo 222222; ?>

 

最后更新于 2017年5月18日

php里设置浏览器缓存
标签: