Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
前端之家收集整理的这篇文章主要介绍了
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
对于静态页面还有Etag。
一、先来看第一种情况:apache 静态页面
apache发送给客户端的静态
页面一般包含Last-Modified和Etag,这两个
标签的值来自
静态文件的
修改时间和inode。 下面是
截取得apache返回客户端的头 XML/
HTML代码 <div class="codetitle">
<a style="CURSOR: pointer" data="11550" class="copybut" id="copybut11550" onclick="doCopy('code11550')"> 代码如下: <div class="codebody" id="code11550">
Last-Modified: Fri,26 Jan 2007 01:53:34 GMT
ETag: "3f9f640-318-cb9f8380"
搜索引擎之所以喜欢
静态文件是因为有这两个标识,可以判断
文件是否更新过
由于
PHP是动态
生成的,它的
内容是不能根据
PHP程序的时间来确定最后
修改日期,所以默认
PHP返回客户端的时候补包含任何缓存控制,要想利用好缓存就必须了解缓存机制,和理减少b,s的交互,缩减带宽流量,减轻服务器负担...好处多多。
三、缓存控制的具体含义
先解释一下本人经过测试理解的这几个
标签的含义 Cache-Control:指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache-Control并不会
修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令
包括no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached,响应消息中的指令
包括public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age。 各个消息中的指令含义如下: Public指示响应可被任何缓存区缓存。 Private指示对于单个
用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当
用户的部分响应消息,此响应消息对于其他
用户的请求无效。 no-cache指示请求或响应消息不能缓存 no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。 max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。 min-fresh指示客户机可以接收响应时间小于当前时间
加上指定时间的响应。 max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。
PHP用法: 在
输出之前用header(),(如果使用ob_start()可以将header放在程序任意地方)
PHP代码 <div class="codetitle">
<a style="CURSOR: pointer" data="3264" class="copybut" id="copybut3264" onclick="doCopy('code3264')"> 代码如下: