2017-01-04 42 views
1

preload Image files in JavaScript標準的方式似乎是這樣的:在內存中保留圖像是否會阻止該圖像的緩存過期?

var images_to_load = ['img1.png', 'img2.png', 'img3.png']; 
for(var i=0; i<images_to_load.length; i++){ 
    var img = new Image(); 
    img.src = images_to_load[i]; 
} 

這通過讓瀏覽器請求的圖像文件將圖像加載到緩存中。但是,不能保證圖像文件在緩存中存在,如cache expiration time is dependent on server settings and browser settings

如果您將Image對象保存在內存中,圖像是否保證保留在緩存中直到頁面關閉?這裏有一個基本的例子:

var images_to_load = ['img1.png', 'img2.png', 'img3.png']; 
var loaded_images = []; 
for(var i=0; i<images_to_load.length; i++){ 
    var img = new Image(); 
    img.src = images_to_load[i]; 
    loaded_images.push(img); 
} 
+0

爲什麼不使用localstorage,webstorage? – hubman

+0

我的理解是localStorage/sessionStorage不能存儲圖像文件。我知道有辦法將圖像編碼爲DataURI,但對於我的特定問題,這不是一個理想的解決方案。 –

+0

我試圖澄清粗體句子。它原來措辭的方式聽起來很奇怪(我的腦子在解析句子時偶然發現)。我正在做這個評論來驗證OP,我沒有意外地改變粗體語句的含義。 – Amy

回答

1

不,沒有任何gua rantee。

JavaScript內存中的內容與瀏覽器在緩存中的內容完全不同。一種可能的解決方案是在緩存過期之前創建圖像的新實例。如果您重複這一進展,您可以確保您的圖像始終在緩存中可用。

+0

JavaScript可以訪問緩存過期時間嗎? –

+0

@Josh,我不認爲這是可能的。即使知道過期時間,我也必須更新我的答案,但在過期時間之前緩存可能已滿並且瀏覽器開始刪除舊內容。 – Arashsoft