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解决了问题。所以每次我都可以设置标题。