4

Rails アプリのパスがラック キャッシュでスタックしたとします。「/games/zelda」をラックキャッシュから削除/無効化する必要があると言う方法はありますか?

4

2 に答える 2

4

仮定

  1. Rails アプリに名前が付けられますMyApp
  2. 削除したい完全な URL はhttp://www.myapp.com/games/zeldaです。

ステップ 1正規化された鍵を取得する

mock_request = Rack::MockRequest.env_for('/games/zelda', {"SERVER_NAME"=>"www.myapp.com"})
key = Rack::Cache::Key.call(Rack::Cache::Request.new(mock_request))

ステップ 2ストレージ オブジェクトを取得する

metastore_uri = MyApp::Application.config.action_dispatch.rack_cache[:metastore]
entitystore_uri = MyApp::Application.config.action_dispatch.rack_cache[:entitystore]

metastore = Rack::Cache::Storage.instance.resolve_metastore_uri(metastore_uri)
entitystore = Rack::Cache::Storage.instance.resolve_entitystore_uri(entitystore_uri)

ステップ 3メタデータを取得する

stored_meta = metastore.read(key)

手順 4圧縮タイプごとにエンティティ ストアをパージする

stored_meta.each do |sm|
  entitystore.purge(sm[1]["X-Content-Digest"])
end

ステップ 5メタストアをパージする

metastore.purge(key)

これが役立つことを願っています。

于 2016-03-18T23:37:55.537 に答える
0

Memcached インスタンスから 1 つのキーまたはすべてのキーを削除できます。残念ながら、すべてのキーをリストすることはできません。したがって、すべてのキーを繰り返し処理して、無効にしたいキーを削除することはできません。

つまり、次の 2 つのオプションがあります。

  1. Memcached のすべてのキーを削除します。
  2. または、 Memcached ストレージ構成の URI のパスを変更し、すべてのキーを再キャッシュします。
于 2016-03-18T07:49:09.663 に答える