片段缓存与背景工作者

时间:2014-10-23 09:16:00

标签: ruby-on-rails caching ruby-on-rails-4 background-process fragment-caching

我有一个页面可以渲染很多部分内容。 我将它们全部分段缓存,这使它非常快。 Horray!

问题是,由于部分的数量,第一次运行,在写缓存时需要很长时间,请求超时(但其他时间非常快)

我也使用sidekiq(但问题与任何后台处理器有关)

有没有办法在后台进程中保存这些部分,以便错过缓存(由于到期)的用户不会超时?所以我会查看所有部分内容,以及缓存过期的内容(或即将过期)我会重新编写它们吗?

2 个答案:

答案 0 :(得分:0)

我正在开展一些项目并遇到类似的问题。实际上只有在清理缓存后只有加载的页面和问题才有问题。我用另一种方式解决了它(我没有像sidekiq这样的东西,所以也许它不适合你,但也许会有所帮助)

我做了,就是在清理缓存后调用了一个名为open()的方法,并将有问题的url作为参数添加:

open('http://my-website/some-url')

因此,在清理缓存后,正在调用该URL并自动创建新缓存。我们很快就解决了这个问题。我知道一些背景工作者会是更好的解决方案,但对我而言,它有效。

只是说,我们的缓存是由cron清理的,而不是手动清理。

<强>更新

或者如果你想手动清理缓存,你可以在清理缓存调用open('http://my-website/some-url')之后使用sidekiq(我没有尝试过这个,这是唯一的想法)。< / p>

当然,我的问题只有一页,但如果你想要整个网站,那就会让事情变得复杂。

答案 1 :(得分:0)

我只知道preheat gem,但我认为它仍然不够复杂,不能满足我的需要。此外,它还没有维持多年。