我正在開發一個網路應用程式,我希望所有的影像(價值幾百 MB - 20 000 - 50 000 個縮略圖)下載一次并且永遠不會再次下載,因為那些并沒有真正改變。此外,這些影像是從 youtube 服務器下載的,我不想不必要地敲打他們的服務器。
但問題是,當我重新加載頁面時,請求又開始下雨,而不是加載快取的影像。當我導航到我的頁面并重新加載它時會發生這種情況,但是當我打開另一個頁面并按回時,影像將從快取中加載。當我使用 JavaScript 動態添加新內容時,影像也會從快取中加載。
那么,我錯過了什么?
PS 我正在使用地址欄附近的重新加載按鈕重新加載,而不是使用 Ctrl R 或其他清除快取的組合鍵。
PPS 在有人對此發表評論之前澄清一下,我不會一次下載所有這些數千張圖片
uj5u.com熱心網友回復:
對于應用程式中不會改變的檔案,通常可以通過發送下面的回應頭來添加主動快取。這包括應用程式提供的靜態檔案,例如影像、CSS 檔案和 JavaScript 檔案。此外,另請參閱 Expires 標頭。
Cache-Control: public, max-age=604800, immutable
MDN 檔案
uj5u.com熱心網友回復:
要回答您的問題,最好的方法是創建一個 Web 服務器(使用 Node.js、ASP.NET Core、Php 等)。您的服務器應將資源保存在具有最大年齡的靜態檔案夾中。
uj5u.com熱心網友回復:
瀏覽器使用Cache-ControlHTTP 標頭來確定是應從快取中檢索資產還是再次下載資產。
由于您正在盜鏈來自 YouTube 的圖片,因此您無法設定任何 HTTP 標頭;YouTube 服務器確定快取設定。
設定快取設定最直接的方法是首先從 YouTube 下載影像并將它們保存在您自己的服務器上。然后,您可以在Cache-Control從服務器提供影像時設定標題。
另一種選擇可能是代理來自 YouTube 的影像的 HTTP 請求:
- 瀏覽器請求來自
YourServer.com/image/123.png - YourServer.com
YouTube.com/img/123.png使用所需的快取標頭提供來自 的影像。一個HTTP重定向可能會奏效,但是這可能會導致快取頭到YouTube的快取頭被覆寫。您的服務器可能只需要從 YouTube.com 流式傳輸影像資料。 - 盡管影像源自 YouTube.com,但瀏覽器會認為該影像是從 YourServer.com 提供的,并尊重您的快取標頭。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/314686.html
標籤:javascript 图片 火狐 缓存
上一篇:將Playwright包裝在Docker映像中時出錯
下一篇:在Firefox中檢測畫中畫模式
