當我需要處理Spring MVC上的自定義響應數據類型時,似乎有些尷尬。強制瀏覽器緩存來自Spring MVC的JS響應
在我的情況下,我需要返回一個JavaScript內容。但是,我希望它是緩存。
因此要澄清,這不是一個靜態文件大小寫(<mvc:resources...
),而是它是服務器上生成的一個動態文件,我確實想要緩存(即HttpResponse 200和HttpResponse 302)。
在代碼方面,在客戶端我只是有:
<script src="<spring:url value='/some-file.js'/>"></script>
比一個用SpringMVC控制器:
@RequestMapping(value = "/some-file.js")
public ResponseEntity<String> resourceBundles(HttpServletRequest request, HttpServletResponse response, Locale locale) throws IOException {
responseHeaders.add("Cache-Control", "public, max-age");
responseHeaders.add("Content-Type", "text/javascript; charset=UTF-8");
responseHeaders.add("Expires", "max-age");
// Turn this into JSON response:
String someJson = "{ a:a, b;b};";
return new ResponseEntity<String>("var data = " + someJson, responseHeaders, HttpStatus.OK);
}
但是,它似乎是瀏覽器總是試圖訪問此動態JS文件。
由於此文件是依賴於Session的,因此無法生成該文件並將其視爲靜態文件。
有什麼建議嗎?
這可能是有用的:http://stackoverflow.com/questions/1362930/how-do -you-set-cache-headers-in-spring-mvc – beny23 2012-07-25 09:43:31