让我们说我的rails app上的路径卡在机架缓存中。有没有办法说:" / games / zelda"应该从rack-cache中删除/无效?
答案 0 :(得分:4)
<强> Assumtions 强>
MyApp
第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
metastore.purge(key)
我希望这会有所帮助。
答案 1 :(得分:0)
您可以从Memcached实例中删除一个密钥或所有密钥。不幸的是,不允许列出所有密钥。因此,您无法迭代所有键,只删除要使其无效的键。
那说我看到两个选择: