我刚开始使用HTTP缓存,真的需要帮助.
"Cache-Control"
头。这样做的目的是什么?请求头也需要缓存吗?Cache-Control max-age=30, must-revalidate
设置了这个头,但是Firefox3.6.13在30秒后刷新(甚至强制刷新)时似乎不会重新验证文件。也没有访问-登录服务器。这是因为我还没有为Apache中的文件设置过期头吗?来自Firebug日志:
响应头
日期:2011年1月22日09:59:21
最后修改清华,2011年1月20日09:05:11格林尼治时间
Etag "3e000000023ca7-20d-49a436e5b3413“
请求头
维持生命115
连接保持活力
内容类型应用程序/xml
缓存-控制最大年龄=30,must-revalidate
该文件已被修改,但Firefox甚至不执行条件get。Response Date
和Last-Modified
根本不更新。
发布于 2011-01-22 12:15:01
服务器需要设置重新验证指令,而不是客户端。
源控制内容是否应该被缓存以及如何缓存,客户端决定是否遵守它。
必须重新验证只意味着发送一个head请求,如果etag不同,则资源将被刷新。对于大文件来说,这是一种非常普遍的做法,因为电子标签通常会在内容发生变化时发生变化。
然而,对于小文件,您可能根本不想有任何请求,而是更短的超时时间。那么必须重新验证是错误的。服务器负载及其对7kb图像的头请求所消耗的时间并不比服务整个映像少得多。
发布于 2011-02-03 00:02:54
客户端也可以发送缓存控制指令。请参阅:https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-p6-cache-12#section-3.2
不幸的是,当XHR设置浏览器时,浏览器不会(还)遵守它们,但是介入代理缓存通常是这样的。
https://stackoverflow.com/questions/4767502
复制相似问题