到期后Rails操作缓存刷新

时间:2013-02-25 16:15:10

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

我希望过期,然后使用可公开访问的端点刷新控制器操作的缓存。

在我的应用程序中,/ all返回缓存的json,/ update使缓存失效。 您可以在下面看到现有的相关代码。 我想做的不仅是缓存过期而是强制刷新。 所以,我的问题是:

是否有办法在到期后启动动作缓存的刷新,而无需执行操作?

如果答案是否定的(因为我开始怀疑),那么最好的方法是什么?我要求更新操作返回HTTP 200状态,而不是301重定向,因此只是重定向到/ all不是一个选项。

VendorsController

caches_action :all, :expires_in=>2.weeks

....

def all 
  respond_to do |format|
    format.json { render :json => Vendor.all }
    format.html { render :json => Vendor.all }
  end
end


....

def update
  render :nothing => true
  expire_action :action => :all
end

1 个答案:

答案 0 :(得分:3)

您应该使用write_fragment

def update
  render :nothing => true
  expire_action :action => :all

  cache_path = ActionCachePath.new(self, {:action => :all}, false).path
  write_fragment(cache_path, render_to_string(:json => Vendor.all))
end

可能有帮助的来源: