php - 如何使用控制缓存 header ?

标签 php caching header

我下载了适用于 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/

相关文章:

java - 两个tomcat在故障情况下共享缓存并相互支持

c++ - 重用 C++ 头文件

php - Codeigniter 数据库插入数据

php - 通过SSH隧道使用PHP连接到远程MSSQL服务器

javascript - 使用 Javascript (VueJs) 将输入文件数据传递给 PHP(Laravel)

c++ - header `execution` 和 `std::reduce` 未找到

c - 结构问题,将它们放在哪里以及如何在标题中引用它们?

php - 通过 PHP 的 exec 在 Linux Web 服务器上执行二进制文件

java - Spring 可以缓存组件扫描信息/ Autowiring 以缩短启动时间吗?

android - Phonegap - android - 如果方向设置为 true,则图像保存在缓存中