【发布时间】:2014-11-29 22:54:24
【问题描述】:
是否有可能以某种方式强制 200(缓存)响应而不是 304 未修改的静态文件?如果是这样,您可能会节省大量服务器请求并显着加快回访者的加载时间。
【问题讨论】:
标签: nginx
是否有可能以某种方式强制 200(缓存)响应而不是 304 未修改的静态文件?如果是这样,您可能会节省大量服务器请求并显着加快回访者的加载时间。
【问题讨论】:
标签: nginx
我发现仅 Expires 无法正确设置行为。下面肯定火了:
# Set cache
expires 1M;
add_header Pragma public;
add_header Cache-Control "public";
这将在您想要的位置块中进行..
我还认为这方面存在很多误导性信息。200 在某种程度上与 200(缓存)相同。
据我了解:
200 - 服务器请求 - 传输 OK 200(缓存) - OK - 没有服务器请求(来自缓存) 304 - 服务器请求 - 无传输(未修改)
200(缓存)据我所知,它根本不会发出服务器请求。
【讨论】:
在 Nginx 中为您提供静态文件的位置设置 expires 指令。浏览器不会费心与服务器核对,直到到期时间到达。此时,如果静态文件没有更改,服务器可能仍会发回 304 响应,并且必须在浏览器再次检查之前达到过期时间。
顺便说一句,200 响应代码仅表示正在返回请求的资源。它与是否随 HTTP 响应一起发送任何缓存头无关。
【讨论】:
200 不是缓存响应;它表示成功,它需要响应来包含结果。 304表示未修改的资源;也就是说你已经拥有它,所以什么都没有返回。因此,您的建议应该导致所有 304 伪装成 200 失败。即使您不会使用虚假的 200 响应来保存任何请求或加快任何速度。
编辑:在某些情况下,200 表示资源已成功从缓存中取出...
【讨论】: