gpt4 book ai didi

google-chrome - 谷歌浏览器缓存问题

转载 作者:行者123 更新时间:2023-11-30 23:50:12 31 4
gpt4 key购买 nike

我以前问过这个问题,但没有得到答案,所以我添加了更多信息。
我使用 spring 3 mvc 和 spring security 进行身份验证/授权构建了一个对 js 有点重的在线服务。 HTTPS 是任何交互的要求,因此它适用于所有请求。服务器设置由一个 Apache2 服务器后面的单个 Tomcat 7 应用服务器(将来可能会添加更多)组成,该服务器充当具有 mod_proxy、mod_cache 和 mod_deflate 的反向代理。所有可缓存资源(js、css、图像)的缓存 header 设置为:

Cache-Control:max-age=604800, must-revalidate, public

上面的 header 在 Firefox 和 IE 浏览器(至少分别是我测试过的版本 3+ 和 8+)中都有预期的结果,即两个浏览器都相应地缓存 .js 和 .css 文件,除非用户刷新页面所以浏览器将在请求头中附加一个 Cache-Control:max-age=0并会得到 304 回复,或使用 Cache-Control:no-cache 强制刷新所以它会重新获取资源。
另一方面,谷歌浏览器的行为有所不同,尽管它缓存了文件,但它通过将 jsessionid 附加到用于将文件存储在缓存中的键上,将它们绑定(bind)到分配给用户的特定 session 。这会导致每次用户登录/注销或关闭浏览器时从服务器重新获取文件(Spring security 有一个临时 sessionid 和一个不同的记住我的)。当用户访问登录屏幕和登录后被重定向到主站点时,用于登录屏幕和主站点的主 css 甚至被提取了两次(因为现在 chrome 将缓存中没有sessionid 绑定(bind)到它)。

最佳答案

我最近再次遇到了这个问题,我终于弄清楚了 Chrome 拒绝缓存静态资源的原因,即使标题非常好。
它与 session 无关,相反,如果您从 HTTPS URL 请求资源并且服务器使用您未在受信任的证书存储中导入的自签名证书,则它不会缓存任何内容。我有

关于google-chrome - 谷歌浏览器缓存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5880432/

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