设置If-Modified-Since
添加这几行代码就可以了:
3.1、Expires 如expires.php <?php header('Cache-Control: max-age=86400,must-revalidate'); header('Last-Modified: ' .gmdate('D, d M Y H:i:s') . ' GMT' ); header("Expires: " .gmdate ('D, d M Y H:i:s', time() + '86400′ ). ' GMT'); ?> 以上信息表示该文件自请求后24小时后过期。 其他需要处理的动态页面直接调用即可。 3.2、Etag 根据Http返回状态来处理。当返回304直接从缓存中读取 如etag.php <?php cache(); echo date("Y-m-d H:i:s"); function cache() { $etag = "http://www.jb51.net"; if ($_SERVER['HTTP_IF_NONE_MATCH'] == $etag) { header('Etag:'.$etag,true,304); exit; } else header('Etag:'.$etag); } ?>
If-Modified-Since是服务器进行判断,而非cgi程序判断,另外If-Modified-Since是上次服务器返回头部中的Last-Modified信息,如果返回的头部中没有Last-Modified,则请求时是不会带上,也就是说Last-Modified / If-Modified-Since是成对使用的。
什么是”Last-Modified”?
在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是你请求的资源,同时有一个Last-Modified的属性标记此文件在服务期端最后被修改的时间,格式类似这样:
Last-Modified: Fri, 12 May 2006 18:53:33 GMT
客户端第二次请求此URL时,根据 HTTP 协议的规定,浏览器会向服务器传送 If-Modified-Since 报头,询问该时间之后文件是否有被修改过:
If-Modified-Since: Fri, 12 May 2006 18:53:33 GMT
如果服务器端的资源没有变化,则自动返回 HTTP 304 (Not Changed.)状态码,内容为空,这样就节省了传输数据量。当服务器端代码发生改变或者重启服务器时,则重新发出资源,返回和第一次请求时类似。从而保证不向客户端重复发出资源,也保证当服务器有变化时,客户端能够得到最新的资源。
如果你真的想知道If-Modified-Since的内容,需要在nginx中fastcgi.conf配置
// 请求的头部的所有内容 fastcgi_param REQUEST_HEADER $request;
nginx expires控制页面缓存
http://www.jb51.net/article/33213.htm
Etag和Expires 性能调优
http://www.jb51.net/article/33214.htm
最全的HTTP头部信息分析
http://www.itnose.net/detail/6023525.html
补充:还可以有不同的配置的:/etc/nginx/nginx.conf
http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; # server_tokens off; # server_names_hash_bucket_size 64; # server_name_in_redirect off; include /etc/nginx/mime.types; default_type application/octet-stream; ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## # Gzip Settings ## gzip on; gzip_disable "msie6";
location / { { expires 12h; }
<!-- 版权 -->
- 设置If-Modified-Since
- 设置If-Modified-Since
- 理解HTTP headers之Expires、Cache-Control、IF-Modified-Since
- HTTP的请求头标签 If-Modified-Since
- 如何利用客户端缓存对网站进行优化? If-Modified-Since & If-None-Match
- If-Modified-Since & If-None-Match
- 完美解释if-modified-since/not-modified 文件头的意义
- HTTP的请求头标签 If-Modified-Since
- 不要直接对Request.Headers["If-Modified-Since"]使用Convert.ToDateTime
- If-Modified-Since & If-None-Match
- 浏览器缓存分析之Last-Modified/If-Modified-Since
- HTTP的请求头 Last-Modified 与 If-Modified-Since 和 If-None-Match 与 ETags
- 与谷歌机器人的第二次约会:HTTP 状态代码和If-Modified-Since
- HTTP的请求头标签 If-Modified-Since
- 有关Last-Modified 与 If-Modified-Since
- HTTP标签 If-Modified-Since
- HTTP头:If-Modified-Since, If-None-Match
- 今天理解了一下HTTP头的Last-Modified 与If-Modified-Since
- 浏览器刷新 和 304 Not Modified 与 If-Modified-Since 及 Cache-Control
- 如何利用客户端缓存对网站进行优化? If-Modified-Since & If-None-Match