如何使用控制
我下载了谷歌Chrome浏览器的谷歌速度追踪器,以查看我的网站的性能是否明智,并告诉我需要为像style.css,图像等某些文件启用缓存。
我读过下面的PHP代码应该告诉浏览器缓存html内容。 我写了一个快速的PHP页面,其中包含一些图片,并将下面的代码粘贴在顶部(在发送标题之前)以测试它的工作方式。
Header("Cache-Control: public, max-age=3600, must-revalidate");
当我追溯速度追踪者的分析时,它说...
摘要来自缓存:false
Request Headers Pragma:no cache Cache-Control:max-age = 0
但在响应头下 ... Cache-Control:public,max-age = 3600,必须重新验证(正是我指定的)
我有点困惑,发生了什么......? 当它从缓存中表示:false是否意味着从服务器缓存而不是客户端的缓存?
关键是必须重新验证 :这意味着客户端询问服务器文件是否已更改。 如果您不处理这种情况,浏览器将获取新副本。
阅读马克诺丁汉的奇妙的缓存教程了解更多信息。 作为一个PHP实现的例子,你可以使用我的代码。
查看$_SERVER['HTTP_IF_NONE_MATCH']
和$_SERVER['HTTP_IF_MODIFIED_SINCE']
来验证客户端。 并且请注意,这两个标头可能包含恶意代码。 ;)
当它从缓存中表示:false是否意味着从服务器缓存而不是客户端的缓存?
^这是指客户端缓存。
以这种方式设置缓存将覆盖您的PHP文件,但您需要实现其他服务器端的缓存图像,CSS,脚本等内容。如果您的服务器支持,可以使用.htaccess完成。
例如,这是我在我的.htaccess文件中用于几个站点的内容。
<FilesMatch ".(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)(.gz)?$">
Header set Expires "Thu, 15 Apr 2012 20:00:00 GMT"
Header unset ETag
FileETag None
</FilesMatch>
我对这个工具并不熟悉,但是,直到任何浏览器获取缓存头的内容后,它将无法缓存它。 看起来你的服务器正在发送预期的头文件,页面应该被浏览器缓存 - 你的浏览器现在应该在其缓存中有一个副本。 如果您尝试再次获取相同的页面,则将从缓存而非源服务器获取它(假设1小时的时间限制尚未到期)。
请注意,某些浏览器会将刷新请求解释为显式请求,以忽略缓存并再次获取页面 - 尝试通过链接访问它,而不是点击刷新按钮。
C。
链接地址: http://www.djcxy.com/p/45285.html上一篇: how to use control
下一篇: Handling versioning in a continuous integration environment