Ruby on rails Rails 4,动作缓存,为什么即使在缓存时动作仍然运行
我有两个简单控制器的实现 在第一个实现中,每件事情都可以正常工作,只有当缓存丢失时,才会执行ActionShow。 但我知道在缓存操作过程中设置object@page是个坏主意 这就是为什么我有第二个实现,它看起来更好。 它也可以工作并返回缓存视图。 但是,我不明白为什么在使用过滤器之前使用Ruby on rails Rails 4,动作缓存,为什么即使在缓存时动作仍然运行,ruby-on-rails,ruby-on-rails-4,caching,Ruby On Rails,Ruby On Rails 4,Caching,我有两个简单控制器的实现 在第一个实现中,每件事情都可以正常工作,只有当缓存丢失时,才会执行ActionShow。 但我知道在缓存操作过程中设置object@page是个坏主意 这就是为什么我有第二个实现,它看起来更好。 它也可以工作并返回缓存视图。 但是,我不明白为什么在使用过滤器之前使用,即使缓存命中,操作show仍在执行。在日志中我看到当前时间 你能解释一下为什么吗? 求你了 实施1 class Frontend::StaticPagesController < Frontend::
,即使缓存命中,操作show
仍在执行。在日志中我看到当前时间
你能解释一下为什么吗?
求你了
实施1
class Frontend::StaticPagesController < Frontend::FrontendController
caches_action :show, :cache_path => Proc.new {
@page = StaticPage.find_in_cache(params[:permalink])
{key: "#{@page.cache_key}-#{I18n.locale}"}
}
def show
logger.debug Time.now.to_s.yellow
end
end
class Frontend::StaticPagesControllerProc.new{
@page=StaticPage.find_在_缓存中(params[:permalink])
{key:{@page.cache{u key}-{I18n.locale}}
}
def秀
logger.debug Time.now.to_.yellow
结束
结束
实施2
class Frontend::StaticPagesController < Frontend::FrontendController
before_filter :set_page, :show
caches_action :show, :cache_path => Proc.new {
{key: "#{@page.cache_key}-#{I18n.locale}"}
}
def show
logger.debug Time.now.to_s.yellow
end
def set_page
@page = StaticPage.find_in_cache(params[:permalink])
end
end
class Frontend::StaticPagesControllerProc.new{
{key:{@page.cache{u key}-{I18n.locale}}
}
def秀
logger.debug Time.now.to_.yellow
结束
def设置页面
@page=StaticPage.find_在_缓存中(params[:permalink])
结束
结束
p.S.轨道“4.2.3”这条线路
before_filter :set_page, :show
定义:将显示为筛选器。这就是它运行的原因
我猜您希望定义:将页面过滤器设置为仅为显示操作运行。这确实是您的意图,请使用:
before_filter :set_page, only: :show
PS:\u过滤器
过滤器已弃用。改用\u action
过滤器,如在\u action
之前