【问题标题】:Nginx - "force" 200 cache response instead of 304Nginx - “强制” 200 缓存响应而不是 304
【发布时间】:2014-11-29 22:54:24
【问题描述】:

是否有可能以某种方式强制 200(缓存)响应而不是 304 未修改的静态文件?如果是这样,您可能会节省大量服务器请求并显着加快回访者的加载时间。

【问题讨论】:

    标签: nginx


    【解决方案1】:

    我发现仅 Expires 无法正确设置行为。下面肯定火了:

    # Set cache
    expires 1M;
    add_header Pragma public;
    add_header Cache-Control "public";
    

    这将在您想要的位置块中进行..

    我还认为这方面存在很多误导性信息。200 在某种程度上与 200(缓存)相同。

    据我了解:

    200 - 服务器请求 - 传输 OK 200(缓存) - OK - 没有服务器请求(来自缓存) 304 - 服务器请求 - 无传输(未修改)

    200(缓存)据我所知,它根本不会发出服务器请求。

    【讨论】:

      【解决方案2】:

      在 Nginx 中为您提供静态文件的位置设置 expires 指令。浏览器不会费心与服务器核对,直到到期时间到达。此时,如果静态文件没有更改,服务器可能仍会发回 304 响应,并且必须在浏览器再次检查之前达到过期时间。

      顺便说一句,200 响应代码仅表示正在返回请求的资源。它与是否随 HTTP 响应一起发送任何缓存头无关。

      【讨论】:

      • 我已将过期设置为 2 周,但 Google Chrome 的开发工具仍显示 304 个请求而不是 200 个代码。是否提供虚假信息?
      【解决方案3】:

      200 不是缓存响应;它表示成功,它需要响应来包含结果。 304表示未修改的资源;也就是说你已经拥有它,所以什么都没有返回。因此,您的建议应该导致所有 304 伪装成 200 失败。即使您不会使用虚假的 200 响应来保存任何请求或加快任何速度。

      编辑:在某些情况下,200 表示资源已成功从缓存中取出...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-09
        • 1970-01-01
        • 2017-12-01
        相关资源
        最近更新 更多