現代瀏覽器中的快取很糟糕,為什麼以及如何解決?

現代瀏覽器中的快取很糟糕,為什麼以及如何解決?

我注意到所有現代瀏覽器都存在不足的一件事是快取。我記得幾年前的 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 用戶郵件列表中詢問。

相關內容