我下载了适用于 Google chrome 的 Google Speed Tracer,以了解我的网站性能如何,它告诉我需要为某些文件启用缓存,例如我的 style.css、图像等。
我读到下面的 php 代码应该告诉浏览器缓存 html 内容。我写了一个带有几个图像的快速 php 页面,并将下面的代码粘贴在顶部(在发送标题之前)以测试它是如何工作的。
Header("Cache-Control: public, max-age=3600, must-revalidate");
当我返回速度追踪器的分析时,它说...
总结 来自缓存:假
请求 header Pragma:无缓存 缓存控制:最大年龄=0
但是在响应头下... Cache-Control: public, max-age=3600, must-revalidate(正是我指定的)
我有点困惑,这是怎么回事……?当它说 from cache: false 这是否意味着来自服务器缓存而不是客户端的缓存?
最佳答案
关键是must-revalidate:这意味着客户端正在询问服务器文件是否已更改。如果您不处理这种情况,浏览器将获取一个新副本。
阅读Mark Nottingham’s fantastic Caching Tutorial想要查询更多的信息。 作为 PHP 实现的示例,您可以使用 my code .
查看 $_SERVER['HTTP_IF_NONE_MATCH']
和 $_SERVER['HTTP_IF_MODIFIED_SINCE']
以验证客户端。请注意,这两个 header 都可能包含恶意代码。 ;)
关于php - 如何使用控制缓存 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2594695/