我的理解是,要在 Rails 3 中使用 http 缓存,我所要做的就是在操作中添加类似这样的内容
expires_in(10.seconds, :public => true)
但是当我这样做时,除了在浏览器中执行 http 缓存之外,它还会尝试写入 tmp/cache(正如预期的那样,对该操作的相同用户请求不会命中服务器)
为什么是这样?如何阻止 Rails 写入缓存目录以进行 http 缓存?
PS:我用的是nginx+passenger
我的理解是,要在 Rails 3 中使用 http 缓存,我所要做的就是在操作中添加类似这样的内容
expires_in(10.seconds, :public => true)
但是当我这样做时,除了在浏览器中执行 http 缓存之外,它还会尝试写入 tmp/cache(正如预期的那样,对该操作的相同用户请求不会命中服务器)
为什么是这样?如何阻止 Rails 写入缓存目录以进行 http 缓存?
PS:我用的是nginx+passenger
写入 /tmp/cache 的内容是Rack::Cache::FileStore,可通过 config.cache_store 进行配置;这是一个 rails3 原生代理缓存;
如果你想禁用它:
config.action_dispatch.rack_cache = nil
另一种解决方案是不使用 expires_in 中的 :public => true 设置。看来此设置是 Rack::Cache 将响应写入缓存的原因。如果您将其设置为 private => true (默认值),则不会发生这种情况