时间:2022-03-17加入收藏
这样就可以给静态文件缓存了,在有效期内,浏览器会直接读取客户端的缓存,而不用再请求服务器,除非用户清除了缓存或者使用Ctrl+F5强制刷新了页面。location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
上面的代码就告诉了浏览器缓存时间,下次浏览器再访问该页面的时候会带上名叫IF_MODIFIED_SINCE的请求头来访问,这时候我们可以用PHP变量:$_SERVER['HTTP_IF_MODIFIED_SINCE']来获取浏览器记录的缓存时间,如果没有内容更新,我们直接返回304状态码即可,如果有更新直接输出新内容,并返回新的过期时间给浏览器。大概的代码如下:$time=86400; //单位秒
header('Cache-Control:max-age=' . $time);
header("Expires: " . gmdate("D, d M Y H:i:s", time() + $time) . " GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
如何来判断服务器内容是否有更新有很多种方式,比如Etag功能就可以,关于Etag的介绍可以百度下。网站访问速度很重要,能快一点,就让它快一点吧!搞网站就在于折腾,哈!<?php
$time = 86400;
if(isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])){
$is_update=0;//判断是否有更新
if($c_time > time()){
header('Cache-Control:max-age='.$time);
header("Expires: " . gmdate("D, d M Y H:i:s",time()+$time)." GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header('HTTP/1.1 304 Not Modified');
exit();
}
}
header('Cache-Control:max-age=' . $time);
header("Expires: " . gmdate("D, d M Y H:i:s", time() + $time) . " GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");