5

我希望实现ETagbased cache-control,我想知道ETags在浏览器中存储多长时间,以及它们是否可以保存比当前会话更长的时间。

我有服务器设置并ETags正确发送响应,并且我正在从浏览器发送请求jQuery.ajax

系统正常工作,如果标头(前一个)与服务器上生成的匹配,则使用适当的304 响应进行响应。这一切都适用于当前会话,但是当我关闭浏览器并重新打开它时,jQuery 不再发送标头。Not-ModifiedETagETagNot-Modified

我想知道是否有任何方法可以用来触发默认浏览器行为,并发送Not-Modified响应的标头(如果适用),而无需在 ajax 请求中手动设置标头或存储ETagin localStorage/ indexedDb

4

1 回答 1

1

一个 Etag 必须伴随着其他标签,告诉浏览器多长时间保存内容

https://developers.google.com/speed/docs/best-practices/caching?csw=1#LeverageBrowserCaching

为所有可缓存资源指定 Expires 或 Cache-Control max-age 之一以及 Last-Modified 或 ETag 之一非常重要。同时指定 Expires 和 Cache-Control: max-age 或同时指定 Last-Modified 和 ETag 是多余的。

因此,这完全取决于您使用 Expires 或 max-age 标签指定的持续时间,以及浏览器将持有它的时间

etag 的唯一目的是让浏览器可以在初始过期期后发出“如果已修改”请求,以查看内容是否实际更改或返回未修改的 304。

管理不善的 304 可能会导致其他问题,例如不必要和冗余的 304 请求:http ://calendar.perfplanet.com/2010/easy-cache-headers/

于 2013-08-23T12:50:42.310 回答