【问题标题】:Rails caching problem?Rails 缓存问题?
【发布时间】:2011-07-14 11:37:54
【问题描述】:

我有一个运行良好的 Rails 博客应用程序。但是,我对缓存进行了一些实验,尽管已恢复到以前的版本,但这里仍然存在问题。

似乎所有页面都在缓存中或类似的地方(我已经清理了浏览器缓存),因为服务器日志没有显示任何对数据库的访问。

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

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 caching


    【解决方案1】:

    问题可能是您使用了这样的页面缓存:

    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
    

    【讨论】:

    • 文件存储在公共目录中,这就是问题所在。非常感谢!
    猜你喜欢
    • 2013-11-27
    • 1970-01-01
    • 2011-06-03
    • 2016-09-01
    • 2015-03-26
    • 2011-08-09
    • 2018-04-08
    • 1970-01-01
    • 2011-09-01
    相关资源
    最近更新 更多