2013-11-20 41 views
1

我需要爲特定項目創建一個通過Ajax工作的圖像管理器(以獲取圖像列表,顯示它們......)。Javascript上傳和實時圖像刷新/重新加載

通過Ajax腳本(使用新的JavaScript File API)完成新圖像或圖像修改的上傳。 上傳工作正常,但在修改圖片時遇到問題:上傳後瀏覽器顯示的圖片是緩存的圖片,而不是上傳的圖片!

我知道這是一個經典的緩存問題,可以通過'imagesrc?new Date.getTime()'破解來解決,但是我不能在這裏使用它。實際上,這種黑客並沒有真正重新加載圖像,它只創建一個新的圖像實例到緩存中,關聯到圖像url'imagesrc?new Date.getTime()'。因此,如果在任何時候進入圖像管理器,我會重試顯示圖像,但不向src添加'?new Date.getTime()',它會再次顯示舊圖像。 而且我不能系統地添加這個黑客(因爲,例如,如果圖像管理器需要顯示大量非常沉重的圖像,那麼將它們從瀏覽器緩存中取出直到它們被修改)是非常有用的。

我搜索了一種方法來解決在互聯網上的這個問題(真正取代了JavaScript上傳而不是使用上面的黑客後緩存的圖像),但我什麼也沒找到。

有沒有辦法做到這一點,還是完全不可能? 任何幫助或建議將不勝感激。

提前

奧利維爾

回答

0

非常感謝您配置服務器發送ETag-headers的圖像。

ETag是修改文件時發生更改的文件的哈希值。如果發送了ETag,瀏覽器將在其下一個請求中添加一個If-None-Match-包含該資源的最後一個收到的ETag的標題,如果沒有改變,服務器將響應304: not modified以節省流量,或者如果有新文件則發送新文件。