Javascript HTTP缓存控制
我是HTTP缓存新手,真的需要一些帮助Javascript HTTP缓存控制,javascript,firefox,http-headers,cache-control,xmlhttprequest,Javascript,Firefox,Http Headers,Cache Control,Xmlhttprequest,我是HTTP缓存新手,真的需要一些帮助 我看到很多人在向服务器发送XHR时设置了“Cache Control”标题。 这样做的目的是什么?请求头也需要缓存吗 我已为XHR设置了此标题: Cache Control max age=30,必须重新验证,但Firefox 3.6.13在30秒后刷新(甚至强制刷新)时似乎不会重新验证文件。服务器中也没有访问日志。这是因为我没有在Apache中为文件设置expire头吗 从Firebug日志: 响应标题 日期:2011年1月22日星期六09:59:21
“Cache Control”
标题。
这样做的目的是什么?请求头也需要缓存吗Cache Control max age=30,必须重新验证
,但Firefox 3.6.13在30秒后刷新(甚至强制刷新)时似乎不会重新验证文件。服务器中也没有访问日志。这是因为我没有在Apache中为文件设置expire头吗
从Firebug日志:
响应标题日期:2011年1月22日星期六09:59:21 GMT
最后修改时间:2011年1月20日星期四09:05:11 GMT
Etag“3e000000023ca7-20d-49a436e5b3413” 请求标题
保持活力115
连接保持活动状态
内容类型应用程序/xml
缓存控制最大期限=30,必须重新验证 该文件已被修改,但Firefox甚至没有执行条件get<代码>响应日期和上次修改的
根本不更新
服务器需要设置重新验证指令,而不是客户端 源代码控制是否缓存内容以及如何缓存内容,客户机决定是否接受该内容 必须重新验证只意味着发送一个head请求,如果etag不同,则刷新资源。对于大文件来说,这是一种非常常见的有意识的做法,因为一旦内容发生变化,电子标签通常会发生变化 然而,对于小文件,您可能不希望有任何请求,而是希望有更短的超时时间。那么必须重新验证是错误的。
服务器负载及其对7kb映像的head请求所花费的时间并不比为完整映像提供服务少多少。服务器需要设置重新验证指令,而不是客户端 源代码控制是否缓存内容以及如何缓存内容,客户机决定是否接受该内容 必须重新验证只意味着发送一个head请求,如果etag不同,则刷新资源。对于大文件来说,这是一种非常常见的有意识的做法,因为一旦内容发生变化,电子标签通常会发生变化 然而,对于小文件,您可能不希望有任何请求,而是希望有更短的超时时间。那么必须重新验证是错误的。
服务器负载及其对7kb映像的头请求所花费的时间并不比为整个映像提供服务少多少。客户端也可以发送缓存控制指令。见:
不幸的是,当XHR设置时,浏览器(还)不会尊重它们,但介入的代理缓存通常会尊重它们 客户端也可以发送缓存控制指令。见:
不幸的是,当XHR设置时,浏览器(还)不会尊重它们,但介入的代理缓存通常会尊重它们 是的,客户端也可以发送缓存控制指令,但根据IETF文档(以及Mozilla的文档),必须重新验证不是客户端可以设置的指令之一,因此回答是正确的,即“服务器需要设置重新验证指令,而不是客户端”。但我同意,如果他们还说客户可以设定最大年龄,这将是有益的。我不确定哪种浏览器版本在客户端使用,也不尊重它们;最好在服务器上设置所有内容。(另请参阅Chrome 35中修复的Chrome问题333804:它仍然影响Android 4.4应用程序中的WebView组件。)是的,客户端也可以发送缓存控制指令,但根据IETF文档(以及Mozilla文档),必须重新验证不是客户端可以设置的指令之一,因此答案是正确的“服务器需要设置重新验证指令,而不是客户端”。但我同意,如果他们还说客户端可以设置最大年龄,这将是有用的。我不确定哪些浏览器版本会这样做,也不确定哪些浏览器版本会在客户端尊重它们;最好在服务器上设置所有内容。(另请参见Chrome35中修复的Chrome333804问题:它仍然影响Android 4.4应用程序中的WebView组件。)