2011-09-06 39 views
17

我有圖像(PNG),它們是動態生成的,將嵌入到網站和論壇。當一張圖片發佈在一個非常繁忙的頁面上時,有很多連接需要服務以便不經常更改。我想告訴瀏覽器緩存多久。PNG圖像輸出的頭部以確保它在瀏覽器中被緩存?

那麼我需要什麼標題?目前,我有:

Cache-Control: max-age=86400 
Content-Type: image/png 

看來,瀏覽器沒有緩存圖像(大約20-30kb)。還有什麼是必要的?

編輯: 這是一個例子形象,我已經有一個URL與.png擴展: https://images.carspending.com/sigimg/5734/user/honda-accord-2-4i-executive-tourer_medium.png

+1

如果您的網址實際上看起來像圖片(例如:http:// www.example.com/images/myimage.png而不是http:// http:// www.example.com/my_script.php?image = 93895') – NullUserException

+0

我已經這樣做了,編輯後。 – ddinchev

回答

28

是工作的最後一件事是:

header('Pragma: public'); 
header('Cache-Control: max-age=86400'); 
header('Expires: '. gmdate('D, d M Y H:i:s \G\M\T', time() + 86400)); 
header('Content-Type: image/png'); 

現在的瀏覽器不用於圖像加載與嵌入式一個頁面時發出請求。

+0

你能解釋爲什麼這回答這個問題嗎? – Todd

+0

當時它被回答(6年前)它確實解決了這個問題。如果一個包含所有這些頭文件的png資源被加載到外部頁面上,它將被正確緩存。它不適合你嗎? – ddinchev

7

確保您還添加了公共像這樣:

header('Cache-Control: max-age=86400, public'); 

Read this also,是非常有幫助的。

+2

正確的是: header('Pragma:public'); header('Cache-Control:max-age = 86400'); 買你給我的想法 – ddinchev

+0

@Veseliq:我很高興。我不是PHP開發人員,所以我採取了WILD的猜測;)並且很好,您以GMT格式設置了過期日期;否則,它也無法工作。 – Icarus

2

一個Expires標題應該有所幫助。

header('Expires: '. gmdate('D, d M Y H:i:s \G\M\T', time() + 86400)); 
+0

這與Pragma和Cache-Control一起解決了它。 – ddinchev