2011-06-16 64 views
0

我有一個方法映射到像/ foo/*/image這樣的下載圖像的url,我希望瀏覽器緩存該圖片。但我沒有得到它。我可以在Firefox中看到firebug的請求沒有被緩存,並且也發生在Chrome中。在瀏覽器中通過url映射的緩存文件

我試圖在方法中將Cache-Control設置爲「max-age = 3600,public」,但它似乎沒有做任何事情。

下面是由Spring-MVC製作的控制器中調用的一段代碼。

任何人都可以幫助我嗎?

謝謝。

@RequestMapping(value="/foo/{id}/image", method=RequestMethod.GET) 
    public void showImage(
      @PathVariable("id") String id, 
      HttpServletRequest request, 
      HttpServletResponse response, 
      Model model) throws Exception{ 

     //add image to the response 
     service.read(id, response); 

     //mark the response as cacheable 
     HttpServletResponse httpResp = ((HttpServletResponse) response); 
     httpResp.setHeader("Cache-Control", "max-age=3600, public"); 
    } 

回答

0

考慮使用<mvc:resources>。在那裏你可以設置緩存。

除此之外,請確保您的請求不通過覆蓋標頭的代理,並確保響應未被重定向。

+0

下載的圖像沒有存儲在一個文件夾中,它存儲在數據存儲中,所以我認爲我不能使用mvc:資源 – Javi 2011-06-17 07:10:25

+0

您是否在我的答案的第二部分檢查了點? – Bozho 2011-06-17 08:40:12

+0

@ Bozho **這是脫離主題(但來自JAVA):**請你解釋一下'setPreferredSize()'和'setSize()'和'pack()'做了什麼之間的區別? – 2011-06-17 08:56:33