作者godgiraffe (小鹿)
看板Ajax
標題[問題]關於快取:檔案路徑"相同" 檔案內容"不同"
時間Wed Mar 27 17:30:20 2013
[已解決] 解決方法在最下方。
各位大大好
呃… 這標題不知道怎麼下,所以只好下了個爛標題 = =
目前,我有個 html 裡頭有個 div,在每次上傳圖片時
都會用 ajax reload,並顯示圖片
但顯示的圖片,卻會有錯誤,原因似乎是快取的關係??
先說一下我的程式流程:
1、選擇檔案(可多選)
假設選了A、B、C ,三個圖檔
2、選完後,會自動上傳至 server,並重新命名為1、2、3
這三個檔的路徑分別為: img/1.jpg
img/2.jpg
img/3.jpg
3、如果這時候,我將 3 砍掉(有實際將 3.jpg 刪除),並且重新上傳一個 D 圖檔
此時,D 圖檔上傳後,路徑一樣是: img/3.jpg
這時候問題就會出現了(就是相同路徑 but檔案內容不同),
網頁上還是顯示 C 圖檔
除非我 F5 重新整理網頁,才會顯示 D 圖檔
我有在 <head> 裡面 的 <meta> 加入了:
<meta http-equiv="expires" content="0">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
一樣沒有效果 Q_Q
不知道各位大大有沒有遇過這樣子的問題呢?
解決方法:
在輸出 img 的時候,這樣子寫
<img src="1.jpg?隨機數字">
這個隨機數字,看要怎麼產生都可以,我是使用 php
所以我寫成:
$timestamp = time();
"<img src='" . $file_path . $img . "?$timestamp" . "'/>"
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.250.50.43
※ 編輯: godgiraffe 來自: 60.250.50.43 (03/27 17:32)
1F:→ terrybob:在傳出路徑,加一個隨機數字 03/27 17:37
謝謝大大!剛剛也正好找到解答!!
煩惱了一整個下午= =
※ 編輯: godgiraffe 來自: 60.250.50.43 (03/27 17:43)
※ 編輯: godgiraffe 來自: 60.250.50.43 (03/27 17:45)
※ 編輯: godgiraffe 來自: 60.250.50.43 (03/27 17:49)
2F:推 LPH66:順帶解釋一下你的<meta>無用的原因: <meta> 是寫在 HTML 裡 03/28 16:12
3F:→ LPH66:所以只對 HTML 有用, 不過圖片不能像這樣寫 meta 03/28 16:13
4F:→ LPH66:而得要由伺服器方設定才行; 因此加亂數其實就是騙伺服器說 03/28 16:13
5F:→ LPH66:「這是不一樣的檔案喲」才能不讓伺服器去做快取相關的動作 03/28 16:14