0

Play 2の記事によると、(API 仕様で) キャッシュのタイムアウトを含むキャッシュを設定する方法がありますが、必要に応じてキャッシュ全体を手動で期限切れにする機能が必要です。それを行う方法はありますか? 特に、HTTP 応答をそのままキャッシュするのCachedではなく、 を使用しています。Cache

  def get(key: String) = Cached("key-" + key, duration = 3600) {
    Action {
      Ok(some_method)
    }
  }
4

4 に答える 4

4

play2.1でできることCache.remove("item.key")

RC1 へのアップグレードはメジャーではなく、2.0.4 と同じくらい安定しているようです。

于 2012-11-26T20:45:28.657 に答える
2

Play 2 の現在のキャッシュ API は... 非常に合成的です。

(私も使用している)唯一の方法は、秒nullの値を設定することです:0

Cache.set("item.key", null, 0)

編集

実際、Java Cached API ではうまく機能しませんでした。理由がわからないのですが、何かを見落としている可能性がありますCacheResult

public static Result index() {
    Result cachedResult = (Result) Cache.get("applicationIndex");
    if (cachedResult == null) {
        Result res = ok(index.render("Ready " + Math.random()));
        Cache.set("applicationIndex", res, 5);
        cachedResult = res;
    }
    return cachedResult;
}

したがって、前のサンプルを使用して、次のように無効にすることができます。

Cache.set("applicationIndex", null, 0)
于 2012-11-26T18:27:18.233 に答える
0

この play memcached モジュールを使用して、独自のmemcached サーバーを実行できます。これには、キャッシュ全体を手動で期限切れにする API があります。本番環境では、この設定により、再起動を保持するキャッシュといくつかの役立つキャッシュ統計を保持するという追加の利点も得られます。

于 2012-11-27T01:33:20.637 に答える
0

'Cache' の代わりに 'Cached' を無効化しても問題が解決しない場合は、次の 2 行のコードを試してください。

Cache.remove("item.key")
Cache.remove("item.key" + "-etag")

Cached では、'-etag' キャッシュ オブジェクトも削除する必要があります。

于 2014-09-03T11:30:28.833 に答える