gpt4 book ai didi

http - 谷歌浏览器不会在来回时重新验证 etag

转载 作者:可可西里 更新时间:2023-11-01 15:09:01 26 4
gpt4 key购买 nike

即使我发送“cache-control: must-revalidate”,谷歌浏览器在浏览器中使用前后按钮时也会使用本地缓存页面。

这是原始回复的一部分:

HTTP/1.1 200 OK
cache-control: private, must-revalidate
etag: "c9239b5d4b98949f8469a05062e05bb999d7512e"
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=utf-8

如果我刷新页面,我会收到“HTTP/1.1 304 Not Modified”响应,但是当我使用后退按钮时,我会收到以下响应:

Request URL:example.com
Request Method:GET
Status Code:200 OK (from cache)

我正在寻找的响应是 304 或 200 OK,是否可以实现?

最佳答案

使用后退和前进按钮时,防止浏览器返回页面缓存副本的关键 Cache-Control 指令是 no-store

别无他法,也别无所求。您的 Cache-Control header 可以简单地是:

Cache-Control: no-store

不过有两个异常(exception)。

  1. 无论您设置什么 header ,Opera 和 Safari 都不会重新生效(至少我测试过的版本是这样)。如果您在新标签页中打开页面,该副本将是新鲜的,但原始标签页在来回导航时将继续显示陈旧版本,直到您刷新或重新输入 url。
  2. Firefox 在打开的第一个页面的缓存中似乎有一个错误(即当没有后退按钮时)。当您来回导航时,该页面的所有后续实例都会刷新,但一旦您一直备份到最顶层页面,它通常仍会显示其最初的陈旧副本。

最后,我应该指出,通常不建议使用该指令,因为它显然会对带宽使用产生重大影响。浏览器甚至无法利用 Etags 获得 304 Not Modified 响应,因为它没有存储的副本可用于 304 收到响应。

关于http - 谷歌浏览器不会在来回时重新验证 etag,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16173322/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com