Rails アプリのパスがラック キャッシュでスタックしたとします。「/games/zelda」をラックキャッシュから削除/無効化する必要があると言う方法はありますか?
2 に答える
4
仮定
- Rails アプリに名前が付けられます
MyApp
- 削除したい完全な 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 つのオプションがあります。
- Memcached のすべてのキーを削除します。
- または、 Memcached ストレージ構成の URI のパスを変更し、すべてのキーを再キャッシュします。
于 2016-03-18T07:49:09.663 に答える