Rails缓存问题?

sil*_*rmy 3 caching ruby-on-rails ruby-on-rails-3

我有一个运行良好的rails博客应用程序.但是,我做了一些缓存实验,尽管已经恢复到以前的版本,但这里仍有问题.

似乎所有页面都在缓存中或类似的东西(我已经清理了我的浏览器缓存),因为服务器日志没有显示任何获取数据库.

关于如何解决这个问题的任何线索?谢谢!

Pan*_*kos 6

问题可能是你正在使用这样的页面缓存:

class ProductsController
  caches_page :index
  def index
    @products = Product.all
  end
end
Run Code Online (Sandbox Code Playgroud)

这实际上会在/ public目录中创建一个名为products.html的文件,因此,即使是访问Rails堆栈,也会呈现此文件.清除浏览器缓存无法解决问题,因为该文件存储在服务器上.有两种方法可以使此缓存失效.

第一个是创建清除缓存的操作,然后在要清除缓存时调用该操作:

class ProductsController
  def clear
    expire_page :action => :index
  end
end
Run Code Online (Sandbox Code Playgroud)

第二种方法是简单地从命令行(bash)中删除.html文件:

rm public/products.html
Run Code Online (Sandbox Code Playgroud)

由于这个原因,页面缓存令人困惑.很难判断页面实际缓存的时间和存储位置.

PS:如果您没有使用页面缓存,那么您可以使用以下命令清除整个memcached cahce或内存缓存:

Rails.cache.clear
Run Code Online (Sandbox Code Playgroud)