Play Framework 2.4-Java-Http头和缓存响应

Play Framework 2.4-Java-Http头和缓存响应,java,caching,playframework,header,cache-control,Java,Caching,Playframework,Header,Cache Control,我无法发送缓存响应的标头 这是我的路线 GET /fassets/XXX.js com.AssetController.getFileXXX() 还有我的控制器 @Cached(key = XXX, duration = TIMEOUT_SECONDS,) public Result getFileXXX() { [...] final Result result = ok(file).as("application/javascript"); response().setHead

我无法发送缓存响应的标头

这是我的路线

 GET    /fassets/XXX.js  com.AssetController.getFileXXX()
还有我的控制器

@Cached(key = XXX, duration = TIMEOUT_SECONDS,)
public Result getFileXXX() {

[...]
final Result result = ok(file).as("application/javascript");
response().setHeader(CACHE_CONTROL, "max-age=100");
return result;
}
问题在于,对于第一个请求,正确发送了cache control:max age=100。 对于其他的,结果是缓存的,并且没有设置头

我试着

result.headers().put(CACHE_CONTROL, "max-age=10")
但这会导致运行时错误:

Caused by: java.lang.UnsupportedOperationException: null
at java.util.AbstractMap.put(AbstractMap.java:209) ~[na:1.8.0_45]
我还发现了一些有趣的东西,可以解决这个问题,但在scala中:

val result = Ok("Hello World!").withHeaders(CACHE_CONTROL -> "max-age=3600")
提前谢谢你的帮助

朱利安

我认为这也适用于你的问题:

你需要看一下这张照片

文档中设置缓存控制的示例如下

public static Result index() {
  response().setContentType("text/html");
  response().setHeader(CACHE_CONTROL, "max-age=3600");
  response().setHeader(ETAG, "xxx");
  return ok("<h1>Hello World!</h1>");
}
公共静态结果索引(){
response().setContentType(“text/html”);
response().setHeader(CACHE_控件,“max age=3600”);
response().setHeader(ETAG,“xxx”);
返回ok(“你好,世界!”);
}
我会在调用
ok

之前设置
response().setHeader
things,我想这也适用于您的问题:

你需要看一下这张照片

文档中设置缓存控制的示例如下

public static Result index() {
  response().setContentType("text/html");
  response().setHeader(CACHE_CONTROL, "max-age=3600");
  response().setHeader(ETAG, "xxx");
  return ok("<h1>Hello World!</h1>");
}
公共静态结果索引(){
response().setContentType(“text/html”);
response().setHeader(CACHE_控件,“max age=3600”);
response().setHeader(ETAG,“xxx”);
返回ok(“你好,世界!”);
}

我会在调用
ok

之前设置
response().setHeader
things,那么您想要的问题/问题/行为到底是什么呢?我想让缓存控制头与缓存响应一起发送。在这里,响应是从@Cached发送的,而不添加头。我最终通过使用cache.get/set而不是anotation解决了问题。所以我每次都可以设置头。那么您想要的问题/问题/行为到底是什么呢?我想让缓存控制头与缓存响应一起发送。在这里,响应是从@Cached发送的,而不添加头。我最终通过使用cache.get/set而不是anotation解决了问题。所以每次我都可以设置标题。