如何使用控制缓存头? [英] how to use control-cache headers?
问题描述
我下载了适用于Google chrome的Google速度跟踪器,以了解我的网站如何有效地执行性能,并告诉我需要为某些文件(例如我的style.css,图片等)启用缓存.
I downloaded Google speed tracer for Google chrome to see how my site does performance wise and it tells me I need to enable caching for certain files like my style.css, images, etc.
我已经读到下面的php代码应该告诉浏览器缓存html内容.我写了一个快速的php页面,上面有几张图片,并将下面的代码粘贴在顶部(在发送标题之前)以测试其工作原理.
I've read that the below php code should tell browsers to cache html content. I wrote a quick php page with a couple of images on it and stuck the below code at the top (before the headers are sent) to test to see how it worked.
Header("Cache-Control: public, max-age=3600, must-revalidate");
当我回到速度追踪器的分析时,它说...
When I go back to speed tracer's analysis it says...
摘要 来自缓存:false
Summary From Cache: false
请求标头 语法:无快取 缓存控制:max-age = 0
Request Headers Pragma: no cache Cache-Control: max-age=0
但在响应标题下... 缓存控制:公共,最大年龄= 3600,必须重新验证(正是我指定的值)
but under Response Headers... Cache-Control: public, max-age=3600, must-revalidate (exactly what I specified)
我有点困惑,这是怎么回事...?当它从缓存中说出:false时是从服务器缓存而不是从客户端缓存中表示吗?
I'm a little confused, what's going on...? When it says from cache: false does that mean from the server cache and not the client's cache?
推荐答案
密钥为必须重新验证:这意味着客户端正在询问服务器文件是否已更改.如果您不处理这种情况,浏览器将获取一个新副本.
The key is must-revalidate: This means, that the client is asking the server if the file has changed. If you don’t handle this case, the browser will fetch a new copy.
阅读马克·诺丁汉的奇妙的缓存教程,以获取更多信息. 作为PHP实现的示例,您可以使用我的代码.
Read Mark Nottingham’s fantastic Caching Tutorial for more information. As an example for a PHP implementation you may use my code.
查看$_SERVER['HTTP_IF_NONE_MATCH']
和$_SERVER['HTTP_IF_MODIFIED_SINCE']
以验证客户端.并且请注意,两个标头都可能包含恶意代码. ;)
Look into $_SERVER['HTTP_IF_NONE_MATCH']
and $_SERVER['HTTP_IF_MODIFIED_SINCE']
for validating clients. And be aware that both headers may contain malicious code. ;)
这篇关于如何使用控制缓存头?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!