2016-03-31 17 views
1

キャッシュされた応答のヘッダーを送信する際に問題があります。最大エージング= 100正しくsendedではれる:ここでPlay Framework 2.4 - Java - Httpヘッダーとキャッシュされた応答

は私のルート、

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; 
} 

問題は最初のリクエスト、キャッシュ制御のためということです。 その他の場合、結果はキャッシュされ、ヘッダーは設定されません。私もこの問題を解決している可能性が何か面白いものを見つけました

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") 

は私が

result.headers().put(CACHE_CONTROL, "max-age=10") 

しかし、ランタイムエラーにそのリードをしようと試み

お手伝いありがとうございます。

ジュリアン

+0

あなたが望む問題/問題/行動はなんですか? – Castaglia

+0

私は、キャッシュされた応答でキャッシュ制御ヘッダーを送信したいと思っています。 ここでは、ヘッダーを追加せずに@Cachedから応答が送信されます。 私は最後に、注釈の代わりにcache.get/setを使用して問題を解決しました。だから私は毎回ヘッダーを設定することができます。 – Xr17

答えて

0

私はanswer by Codemwnciもあなたの質問に適用さだと思う:

あなたはJavaResponse sectionを見てする必要があります。

ドキュメントからキャッシュ制御を設定する例は、私がokへの呼び出しの前にresponse().setHeader物事を設定します

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>"); 
} 

です。

関連する問題