每当我需要处理 Spring MVC 上的自定义响应数据类型时,这似乎有些尴尬。
就我而言,我需要返回一个 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 文件。
由于此文件依赖于会话,因此我无法生成它并将其视为静态文件。
有什么建议么?