php之浏览器缓存
之前的nginx中expires的配置就属于浏览器缓存,我们可以配置在我们想要缓存的指定文件路径下,也可以使用在代码里面做缓存,下面是代码:
$cache_time = 90;
$modified_time = @$_SERVER['HTTP_IF_MODIFIED_SINCE'];
if( strtotime($modified_time)+$cache_time > time() ){
header("HTTP/1.1 304");
exit;
}
//发送Last-Modified头标,设置文档的最后的更新日期。
header ("Last-Modified: " .gmdate("D, d M Y H:i:s", time() )." GMT");
//发送Expires头标,设置当前缓存的文档过期时间,GMT格式,我们使用的是GMT+8时区
header ("Expires: " .gmdate("D, d M Y H:i:s", time()+$cache_time )." GMT");
//发送Cache_Control头标,设置xx秒以后文档过时,可以代替Expires,如果同时出现,max-age优先。
header ("Cache-Control: max-age=$cache_time");
echo '<br>';
echo time();
这里需要了解三种浏览器刷新的机制ctrl+F5,F5和单击浏览器的“转到”或者通过超链接访问,这三种的机制。
第一种:缓存都不起作用。
第二种:Last-Modified起作用,
第三种:expires起作用
还有一种缓存协商方法就是ETag,ETag是文件标识,通过If-None-Match来判断,是为了弥补Last-Modified的缺点的,在nginx安装ETag模块,就可以使用了.......