2012-04-11 52 views
1

每當用戶上傳新圖像,並且圖像名稱保持不變(因爲圖像名稱基於文件擴展名和userid值),chrome不會更新緩存,而且圖像看起來保持不變。更新服務器 - > chrome緩存問題中的圖像

例如,用戶將上傳的文件image.png

服務器將分析該文件並將其保存爲

87.png 
然而

,以前的文件image2000.png也被存儲爲

87.png 

即使它們是不同的文件。現在

,在IMG呼叫

<img src="/images/87.png"> 

兩個單獨的圖像,但鉻犯規意識到他們正在改變,因此它的緩存圖片87.png輸出加載這是剛剛更新服務器的新形象,而不是。

有沒有辦法強制鉻(和其他瀏覽器)意識到這個圖像剛剛更新,並從服務器而不是緩存加載圖像?還是圖像需要有一個新名字才能實現?

+0

您使用哪個Web服務器? Apache的? – 2012-04-11 05:05:01

+0

數據來自數據庫嗎? – 2012-04-11 05:08:51

回答

2

對不起,我沒有正確地閱讀這個問題。

此行爲是因爲服務器響應的過期標題。更新圖像後,將該圖像的標題設置爲過期。所以瀏覽器獲取更新的圖像。

header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past 

如何專門設置標題更新圖像?

在數據庫中放入一個名爲updated的列。所以每次更新設置此列的圖像1.

(if update ==1) 

一套適當的報頭

+0

我需要這個在用戶上傳照片後自動發生,因爲你的平均喬不會想要甚至不知道按Ctrl-r – JimmyBanks 2012-04-11 05:02:58

+0

對不起,沒有正確地閱讀這個問題 – 2012-04-11 05:06:46

+0

嘿誰投票使它成爲upvote,我正確回答 – 2012-04-11 05:10:04

0

你必須正確地配置你的Web服務器。請注意您的服務器隨圖像返回的「ETag」和「Expires」標題。