首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 4/ Heroku智能过期缓存

Rails 4/ Heroku智能过期缓存
EN

Stack Overflow用户
提问于 2015-09-28 10:08:29
回答 1查看 44关注 0票数 2

我们的应用程序中有一些缓存的块。

根据某些登录,我们有时会修改其中的一些,在这种情况下,我们有一个逻辑过期了相关的块。

当我们在代码中执行更改时,我们需要通过控制台终止这些块。在这种情况下,为了使所有修改的块过期,我们需要检测并精确地使用精确的逻辑。例如,如果我们更改关闭流的头html,则如下所示:

代码语言:javascript
复制
a = ActionController::Base.new
Stream.closed.each {|s| a.expire_fragment("stream_header_#{s.id}") }; nil

实际上,我认为必须是一种更通用的方法,可以简单地比较缓存的块和应该如何呈现的块,而只过期它们的html与缓存的版本不同的块。

我想知道是否有一个gem完成这个任务,如果没有-如果有人已经编写了一些部署钩子来完成它。

==============更新============

的一些想法:

在rake任务中,只要您知道有哪些片段,就可以获得缓存的片段

例如,在我的例子中,我可以:

代码语言:javascript
复制
a = ActionController::Base.new
Stream.each do |s|
  cached_html = a.read_fragment("stream_header_#{s.id}")
     :
     :

如果我能够生成非缓存的html,我可以简单地比较它们的,并在它们不同的情况下终止缓存的片段。

有可能吗?你认为这个任务会有多重?

EN

回答 1

Stack Overflow用户

发布于 2015-09-29 17:28:49

用这么少的代码就很难回答。

您可以使用

代码语言:javascript
复制
cache @object do 
  render somthing
end

因此,基于对象的散列,缓存将使自身失效。对于呈现模板来说,这也是正确的,因为Rails将在此基础上创建一个has,并将其与对象的散列组合起来,以正确地使其失效。这也可以在更深的层次上工作,这样就可以使呈现树的整个分支失效。

让我向您介绍Rails和俄罗斯娃娃缓存的文档。rails.html

还有一段关于这些家伙缓存的精彩视频:https://www.codeschool.com/courses/rails-4-zombie-outlaws

它们是免费的,但是看起来你现在必须注册。

我希望这对你的需要是正确的方向。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32820416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档