如何使用控制

我下载了谷歌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