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 ファイルにアクセスしようとしているようです。
このファイルはセッションに依存するため、生成できず、静的ファイルとして扱います。
助言がありますか?