2

我的理解是,要在 Rails 3 中使用 http 缓存,我所要做的就是在操作中添加类似这样的内容

expires_in(10.seconds, :public => true)

但是当我这样做时,除了在浏览器中执行 http 缓存之外,它还会尝试写入 tmp/cache(正如预期的那样,对该操作的相同用户请求不会命中服务器)

为什么是这样?如何阻止 Rails 写入缓存目录以进行 http 缓存?

PS:我用的是nginx+passenger

4

2 回答 2

2

写入 /tmp/cache 的内容是Rack::Cache::FileStore,可通过 config.cache_store 进行配置;这是一个 rails3 原生代理缓存;
如果你想禁用它:

config.action_dispatch.rack_cache =  nil
于 2013-04-10T00:43:02.770 回答
0

另一种解决方案是不使用 expires_in 中的 :public => true 设置。看来此设置是 Rack::Cache 将响应写入缓存的原因。如果您将其设置为 private => true (默认值),则不会发生这种情况

于 2013-04-10T22:38:43.863 回答