片段缓存在Rails 3中

Kyl*_*cot 1 caching ruby-on-rails ruby-on-rails-3

我有一部分使用Barometer宝石获取天气数据.问题是,每次加载页面时,宝石都会再次拉入天气预报.是否可以使用片段缓存来缓存部分缓存,但只有那个缓存版本可以说3-4个小时?这样,天气数据将保持最新,宝石不必每次都提取全新的数据.

jes*_*iss 6

cache辅助函数接受3个参数:

  def cache(name = {}, options = nil, &block)
    if controller.perform_caching
      safe_concat(fragment_for(name, options, &block))
    else
      yield
    end

    nil
  end
Run Code Online (Sandbox Code Playgroud)

如果您在第二个参数中提供过期密钥,它将被传递给write_fragment最终缓存本身.

像这样 :

-cache "cache_path", :expires => 3.hours do
  =cached_fragment_code
Run Code Online (Sandbox Code Playgroud)

我建议您阅读以ActionView::Helpers::CacheHelper获取更多信息.

  • 它并没有完全说出来,你必须在线之间阅读.`options`参数最终被发送到`Rails.cache.write(key,options,value)`所以它采用了`Rails.cache.write`所采用的任何选项.您可以查看文档,了解您正在使用的任何Rails缓存版本,以获取有关该方法的更多详细信息,但我认为他们都理解`:expires` (2认同)