现代浏览器中的缓存很糟糕,为什么以及如何修复?

现代浏览器中的缓存很糟糕,为什么以及如何修复?

我注意到所有现代浏览器都存在一个缺陷,那就是缓存。我记得几年前使用 Internet Explorer 5(以今天的标准来看,这个浏览器简直糟透了!)时,我可以随时选择“文件/脱机模式”,然后从缓存中浏览我过去几天访问过的所有内容。当连接断开时,它甚至会自动激活脱机模式。此外,即使在网上浏览时,它似乎也比现在更积极地使用缓存。所有这些都是当时调制解调器及其缓慢且不可靠的连接所必需的。如今,当我带着上网本旅行时,我可以经常使用这样的功能,尤其是在 WiFi 不稳定或不可用时。

Firefox 仍然有“离线工作”选项,而且可以处理一些页面,但功能似乎非常有限。此外,没有直接的方法来查看我的历史记录中缓存了哪些网站。

有没有办法让缓存更“积极”或更全面,让离线模式再次有用?也许是扩展,或者是某个浏览器?

答案1

HTML 作者可以使用标头和meta标签来指示浏览器不要缓存页面。

这是现在的趋势,因为 HTML 和浏览器现在或多或少被认为形成了一个通用的应用程序级协议/运行时环境,而不仅仅是一个静态的文档检索协议。

从技术上来说,使用代理服务器可以从 HTML 文档中删除/更改任何不需要的内容。 squid将提供此功能的框架 - 包括通过可以动态修改内容的脚本运行 HTML 请求 - 但您必须编写自己的脚本来修改标签,从而创建您不想要的行为。此外,在页面中使用 Javascript 很麻烦、耗时,每个网站的情况都不同,而且回报通常不值得付出努力。

我不知道有哪个交钥匙解决方案可以提供此功能。

一般来说,我发现通过将页面打印为 .PDF 或类似文件来捕获页面很有帮助,而不是依赖浏览器缓存来记住我正在做什么。

答案2

早期版本squid(2.2 及之前版本)具有“offline_mode”功能。

此模式关闭缓存验证,也就是说,如果资源已经在 squid 缓存中,squid 将不会联系原始网站来检查缓存的资源是否有效/新鲜。

结合offline_mode on并采取积极的措施,refresh_pattern例如

refresh_pattern . 10080 9999% 43200 override-expire ignore-reload ignore-no-cache ignore-no-store ignore-must-revalidate ignore-private override-lastmod reload-into-ims store-stale

你可以离线个月并且仍然可以重新访问您之前访问过的静态网站!

欲了解更多信息,请阅读http://www.squid-cache.org/Doc/config/offline_mode/http://linuxdevcenter.com/pub/a/linux/2001/08/02/offline_squid.html。Squid 可在大多数操作系统上运行,因此可以尝试一下。

我希望这回答了你的最后一个问题。

现在来回答问题标题中的“为什么”,现在的网络已经不再是 IE5 之后的样子了。 大多数网站在离线模式下都会崩溃。 网络越来越依赖于动态实时内容,也就是说,现在很多内容都不能长时间缓存。阅读这个问题我在 Squid 用户邮件列表中询问过。

相关内容