Ruby on rails fragment&;ActiveRecord或SQL缓存在Rails 4中工作吗?
好的,我有一个基本的CMS在工作中&我想尝试一下缓存本质上是一组动态生成的导航链接。在我的Ruby on rails fragment&;ActiveRecord或SQL缓存在Rails 4中工作吗?,ruby-on-rails,ruby,caching,Ruby On Rails,Ruby,Caching,好的,我有一个基本的CMS在工作中&我想尝试一下缓存本质上是一组动态生成的导航链接。在我的pages\u控制器中,我有以下操作来切换页面的可见性,以及基于这些可见页面创建@nav\u links变量的查询 before_filter :nav_links, only: [:index, :new, :show, :edit] def toggle @visibility = @page.visible? ? false : true unless @page.update_attrib
pages\u控制器
中,我有以下操作来切换页面的可见性,以及基于这些可见页面创建@nav\u links
变量的查询
before_filter :nav_links, only: [:index, :new, :show, :edit]
def toggle
@visibility = @page.visible? ? false : true
unless @page.update_attribute(:visible, @visibility)
flash[:alert] = "Uh oh! Looks like something went wrong."
end
expire_fragment "nav"
end
def nav_links
@nav_links = {}
groups = PageGroup.order("id")
groups.each do |group|
if group.visible?
@nav_links[group.name.to_sym] = group.pages.where(visible: true)
end
end
end
在我看来,我已经将页面中有关@nav_links
的部分包装为…
。那么我的问题是,当调用其中一个动作时,会发生什么
@nav_链接哈希?或者只有当视图在缓存中找不到@nav_links
的副本时才会调用它?如果不是每次都执行,Rails是否默认使用SQL缓存来使用相同的结果,除非记录被更改
nav_links
方法,或者缓存是否会像预期的那样工作,仅对更新页面可见性的视图和操作进行更改缓存“nav”
包装在一些模板代码周围,则该代码将运行一次,缓存结果,并且缓存将被重用,直到模板更改。您的缓存
调用不引用任何数据对象,因此没有可以更改的应用程序状态,这将导致缓存被破坏
另外,我相当肯定expire\u fragment
不适用于Rails 4