浏览器如何存储 Etags 以及存储多长时间?

Eli*_*rae 5 javascript browser ajax etag

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

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

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

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

Rob*_*ann 2

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/