【问题标题】:Fragment Caching with a background worker使用后台工作人员进行片段缓存
【发布时间】:2014-12-18 22:20:24
【问题描述】:
我有一个呈现很多部分的页面。
我将它们全部分段缓存,这使得它非常快。万岁!
问题是,因为partials的数量,第一次运行,写缓存的时候,耗时很长,请求超时(但其他时间真的很快)
我也使用 sidekiq(但这个问题与任何后台处理器有关)
有没有办法将这些部分保存在后台进程中,以便错过缓存(由于过期)的用户不会超时?所以我会检查所有部分,那些缓存过期(或即将过期)的部分我会重新缓存它们吗?
【问题讨论】:
标签:
ruby-on-rails
caching
ruby-on-rails-4
background-process
fragment-caching
【解决方案2】:
我正在做一些项目并且遇到了类似的问题。实际上,只有在清理缓存后立即加载的页面和加载问题才存在问题。我用另一种方式解决了它(我没有像 sidekiq 这样的东西,所以也许它对你来说不是正确的解决方案,但也许会有所帮助)
我所做的是,在清理缓存之后调用open() 方法并将有问题的url 作为参数,如:
open('http://my-website/some-url')
所以,在清理缓存后,该 url 被调用并自动创建一个新的缓存。我们以这种方式迅速解决了这个问题。我知道一些后台工作人员会是更好的解决方案,但对我来说它有效。
只是说,我们的缓存是由 cron 清理的,而不是手动清理的。
更新
或者如果你想手动清理缓存,你可以在清理缓存调用open('http://my-website/some-url')之后使用sidekiq(我没有尝试这个,这只是一个想法)。
当然,我的问题是只有一页,但如果你想要整个网站,事情就会变得复杂。