4

我有一个呈现很多部分的页面。我将它们全部分段缓存,这使得它非常快。万岁!

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

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

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

4

2 回答 2

0

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

我所做的是,在清理缓存后立即调用一个open()方法并将有问题的 url 作为参数,如:

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

因此,在清理缓存后,该 url 被调用并自动创建一个新的缓存。我们以这种方式迅速解决了这个问题。我知道一些后台工作人员会是更好的解决方案,但对我来说它有效。

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

更新

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

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

于 2014-10-23T10:19:52.753 回答
0

我只知道preheat gem,但我认为它仍然不够复杂,无法满足我的需要。再加上它已经很久没有维护了。

于 2014-10-23T10:28:01.767 回答