我想通過緩存靜態內容(如圖像(jpg,png,gif)和字體)來改善我對互聯網的體驗。因爲總是在觀看具有大量圖像的網頁時發生,然後使用F5進行刷新時,會再次下載相同的內容。強制鑲邊以緩存靜態內容,如圖像
我知道這是因爲響應頭可能不包含緩存o max-age 0,甚至有時會在響應中沒有緩存或max-age時發生。
但是,如果圖片或字體永遠不會改變,那麼max-age 0就沒用了。所以我想知道是否有一種方法可以覆蓋響應標題並將它們設置爲max-age 1年。也許用擴展名爲Chrome?
我想通過緩存靜態內容(如圖像(jpg,png,gif)和字體)來改善我對互聯網的體驗。因爲總是在觀看具有大量圖像的網頁時發生,然後使用F5進行刷新時,會再次下載相同的內容。強制鑲邊以緩存靜態內容,如圖像
我知道這是因爲響應頭可能不包含緩存o max-age 0,甚至有時會在響應中沒有緩存或max-age時發生。
但是,如果圖片或字體永遠不會改變,那麼max-age 0就沒用了。所以我想知道是否有一種方法可以覆蓋響應標題並將它們設置爲max-age 1年。也許用擴展名爲Chrome?
是的,你可以使用Chrome擴展程序來做到這一點。看到這個Change HTTP Headers鉻擴展已經做到了。
針對您的特殊情況下,你只需要做到這一點:
要做到這一點,你可以使用webRequest Headers Received事件。的onHeadersReceived
onHeadersReceived(任選地同步) 文檔:觸發每個的HTTP(S)的響應報頭被接收到的時間。由於重定向和身份驗證請求,每個請求可能會發生多次。此事件旨在允許擴展添加,修改和刪除響應頭,例如傳入的Set-Cookie頭。
您的代碼將是這個樣子
chrome.webRequest.onHeadersReceived.addListener(function(details){
for(var i = 0; i < details.responseHeaders.length; i++) {
// If response is of image, add the cache-control header
}
return {responseHeaders: details.responseHeaders};
},
{urls: ['https://*/*'], types: ['image'] },
['blocking', 'responseHeaders']);
PS:我還沒有運行,測試的代碼,所以請原諒錯別字。
不,這是不可能的,因爲現在(2014年3月22日)。添加Cache-control
對緩存行爲沒有影響。查看this answer瞭解更多詳情。
我做到了,並在權限我把這個: 「*://*/*.jpg」,「*://*/*.png」,「*:// */* .gif「,」webRequest「,」webRequestBlocking「 該函數被調用,因爲在控制檯中,我看到添加了頭部,但是在圖像的響應頭部(在它們的網絡選項卡中)沒有出現。並且我在extraInfoSpec參數中添加了'blocking'以使其同步 – jscripter
好吧,因爲沒有其他答案,並且理論是正確的,所以推測 – jscripter
但是順便提一下,我提出了另一個問題來解釋這個問題: http://堆棧溢出。com/questions/22209359/cache-all-images-with-onheadersreceived – jscripter
如何從動態圖像客戶端告訴靜態圖像。如果這沒有問題,鉻將已經這樣做。 – user1937198
我不明白。對不起我是西班牙語揚聲器 – jscripter