【发布时间】:2011-07-14 11:37:54
【问题描述】:
我有一个运行良好的 Rails 博客应用程序。但是,我对缓存进行了一些实验,尽管已恢复到以前的版本,但这里仍然存在问题。
似乎所有页面都在缓存中或类似的地方(我已经清理了浏览器缓存),因为服务器日志没有显示任何对数据库的访问。
关于如何解决这个问题的任何线索? 谢谢!
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 caching
我有一个运行良好的 Rails 博客应用程序。但是,我对缓存进行了一些实验,尽管已恢复到以前的版本,但这里仍然存在问题。
似乎所有页面都在缓存中或类似的地方(我已经清理了浏览器缓存),因为服务器日志没有显示任何对数据库的访问。
关于如何解决这个问题的任何线索? 谢谢!
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 caching
问题可能是您使用了这样的页面缓存:
class ProductsController
caches_page :index
def index
@products = Product.all
end
end
这实际上在您的 /public 目录中创建了一个名为 products.html 的文件,因此该文件甚至不会碰到 Rails 堆栈,而是被渲染。清除浏览器缓存并不能解决问题,因为文件存储在服务器上。有两种方法可以使这个缓存过期。
第一个是创建一个清除缓存的动作,然后在你想清除缓存的时候调用那个动作:
class ProductsController
def clear
expire_page :action => :index
end
end
第二种方法是简单地从命令行 (bash) 中删除 .html 文件:
rm public/products.html
由于这个原因,页面缓存令人困惑。很难判断页面实际缓存的时间和存储位置。
P.S:如果您没有使用页面缓存,那么您可以使用以下命令清除整个 memcached cahce 或内存缓存:
Rails.cache.clear
【讨论】: