当我需要处理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