Rails动作缓存过期后刷新



我正在寻找过期,然后使用可公开访问的端点刷新控制器动作的缓存。

在我的应用程序目前,/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

您应该使用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

可能有帮助的来源:

  • ActionCacheFilter
  • expire_action

相关内容

  • 没有找到相关文章

最新更新