2013-10-15 61 views
2

其中我必須創建一個簡單的圖像編輯器來執行像翻轉,翻牌,添加邊界等操作。我正在使用jsp servlets。無論何時執行操作,POST將ajax請求發送到具有數據映像服務器相對路徑和操作名稱的服務器。我正在使用ImageMagick執行操作 - 以解決質量問題。一旦完成更改(直到使用ajaxloader),響應被髮送回視圖。一切都可以正常工作,直到用戶完成一次操作後單擊該操作爲止。舊圖像 - 與之前的圖像編輯操作再次顯示,並在某些時間後反映出這些更改。我搜索了它並得出結論,這是由於緩存。我嘗試了所有可能的事情 -更改圖像數據不反映ModelView

  1. 附加的圖像服務器相對路徑的路徑帶有時間戳

    http://172.16.3.72:8080/~user/dataDir/workspace/2/tempData/ResizeImage.jpeg?random=1381852940376
  2. 附加了ajax的URL帶有時間戳

    http://172.16.3.72:8080/cdl/captureImage.htm?pageNumber=2&isbn=AndItWorksFinally2?random=.332223223
  3. 已使用緩存:false在jquery中

  4. 使用的頭禁用緩存

    response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); 
    response.setHeader("Pragma", "no-cache"); 
    response.setDateHeader("Expires", -1);

但所有這些事情沒有幫助。還有別的東西,而不是緩存問題? 想知道Facebook如何從服務器加載圖像如此之快(無重複),當我們在查看圖片時點擊下一個按鈕。

回答

3

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); response.setHeader("Pragma", "no-cache"); response.setDateHeader("Expires", -1);

,而不是使用這個從jQuery的嘗試通過自身請求的頁面上的標題。

並嘗試在請求的頁面上使用唯一的圖像名稱。通常瀏覽器顯示緩存中以前渲染的圖像。

+1

它的工作先生!現在,每次我都會爲正在發送的圖像賦予一個唯一的名稱,作爲從服務器追加時間戳到圖像名稱的響應!非常感謝! –