Javascript 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

我是HTTP缓存新手,真的需要一些帮助

  • 我看到很多人在向服务器发送XHR时设置了
    “Cache Control”
    标题。 这样做的目的是什么?请求头也需要缓存吗

  • 我已为XHR设置了此标题:
    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组件。)