作为浏览器最终用户,而不是 Web 开发人员,我如何才能简单地强制 Firefox 始终存储 https 缓存,就像存储 http 缓存一样?理想情况下,缓存的有效期应该比网站作者提到的时间更长,但目前这只是一个不错的额外功能。
在这种情况下,我不想要任何自动的安全措施。我知道在 1993 年左右,开发人员不得不为 https 数据添加一些全面的保护措施,但现在每个网站都以 https 形式提供,这带来的不便多于帮助。特别是当你没有始终在线的互联网连接时!
我同意隐私浏览不保存缓存,事实上这甚至会更好。但我我希望我今天看到的通过 https 提供的文档网站,在明天我电脑从睡眠状态恢复时,在没有互联网连接的情况下,仍能显示在我的浏览器中。
我已尝试在:、、、、、中启用(=true
)。about:config
browser.cache.disk.enable
browser.cache.disk_cache_ssl
browser.cache.offline.enable
dom.caches.enabled
dom.caches.testing.enabled
privacy.clearOnShutdown.cache=false
查看他们的文档,https://firefox-source-docs.mozilla.org/networking/cache2/doc.html甚至没有“ssl”或“https”或“secure”字样......
请不要回复说这种行为对我自己更好。事实并非如此。我已经为银行等运行了不同的 Firefox ESR 配置文件,该配置文件在自己的进程命名空间上运行,甚至无法将数据存储到磁盘。但我的常规 Firefox 进程应该使用磁盘缓存总是。
答案1
浏览器中的 HTTPS 机制很大程度上依赖于 HTTP 机制,包括使用这两种协议的缓存。
您遇到的问题很可能是计算机处于睡眠状态时缓存页面过期。
我在最近的 Mozilla 文章中没有找到有关到期时间的信息,例如 HTTP 缓存尽管本文深入讨论了诸如 Cache-control 之类的 HTTP 指令。
我发现的文章是古老的 Mozilla 中的 HTTP 缓存 自 2002 年以来,它使用 RFC 2616 来 超文本传输协议——HTTP/1.1。
最相关的段落是:
新鲜度寿命是根据几个标头计算的。如果指定了“Cache-control: max-age=N”标头,则新鲜度寿命等于 N。如果此标头不存在(这种情况很常见),则我们查找“Expires”标头。如果存在“Expires”标头,则其值减去“Date”标头的值即可确定新鲜度寿命。最后,如果两个标头都不存在,则我们查找“Last-Modified”标头。如果存在此标头,则缓存的新鲜度寿命等于“Date”标头的值减去“Last-modified”标头的值再除以 10。这是 RFC 2616 第 13.2.4 节中建议的简化启发式算法。
到期时间的计算方法如下:
expirationTime = responseTime + freshnessLifetime - currentAge
其中 responseTime 是浏览器收到响应的时间。