2012-09-17 86 views
2

我有一個PHP頁面,其中有一些Javascript會在固定的時間間隔(5秒)後改變IMG標籤上的SRC屬性。有一個固定數量的圖像,我循環。 PHP爲所有圖像URL構建一個字符串數組。圖像小於10k。瀏覽器緩存圖片嗎?

如何判斷瀏覽器是否緩存圖像,如果不是,我該怎麼做以確保瀏覽器緩存它們?

+0

當然,瀏覽器緩存圖像。 –

+2

是的,安裝firebug或webkit調試器,它會告訴你瀏覽器是否使用了緩存版本。人們通過在文件末尾添加一個數字來避開它 –

+0

大部分情況下,瀏覽器的緩存是由用戶控制的。 – j08691

回答

1

是的,瀏覽器會緩存它們,通常即使您的標題說不然。我發現最好的組合是發佈必要的Cache-Control標頭,並在源URL中附加一個隨機字符串。

例如,設置最大年齡秒:

header("Cache-Control: max-age=3600"); 

然後附加一個隨機字符串到您的IMG的來源。這將需要在Javascript中,而不是在PHP,因爲一旦你的網址是在PHP中生成的,他們不會讓一個新的隨機字符串更新:

var randomString = "" + new Date().getTime(); 
var imageUrl = yourImageArray[someIndex] + "?" + randomString; 

希望你的想法。

+0

好的,我該怎麼做?我在PHP文件中提到了幾個圖像,我如何確保只有循環中的圖像被緩存?我不關心其他人,所以一個解決方案,只需緩存一個小時就可以了... – BigMac66

+0

好吧,我錯誤地理解了你的原始請求,並更新了我的答案,將緩存控制設置爲1小時。此外,您是否希望讓瀏覽器緩存圖片一小時,但是確保一小時後瀏覽器強制它們重新加載? – davidethell

+0

我不認爲有人會在我的網站上呆上一個多小時 - 我只是不想每5秒鐘加載一張10K的圖片......這只是一種不必要的浪費。 – BigMac66

1

如果您需要嘗試強制瀏覽器不緩存某些圖像,則應正確配置服務器爲每個圖像請求發送的標頭,以便它們發送適當的緩存控制標頭。

+0

我想緩存他們 - 只是不知道如何讓他們是sur。 – BigMac66

+0

正如在原始問題的評論中提到的那樣,您可以使用Firebug,WebKit Debugger,devloper工具等來查看瀏覽器產生的每個請求。如果圖像已加載,但沒有網絡請求,則從緩存中填充圖像。 –