我有一个呈现很多部分的页面。我将它们全部分段缓存,这使得它非常快。万岁!
问题是,由于partials的数量,第一次运行,写入缓存时,需要很长时间,请求超时(但其他时间真的很快)
我也使用sidekiq(但这个问题与任何后台处理器有关)
有没有办法将这些部分保存在后台进程中,以便错过缓存(由于过期)的用户不会超时?所以我会检查所有部分,那些缓存过期(或即将过期)的部分我会重新缓存它们吗?
我有一个呈现很多部分的页面。我将它们全部分段缓存,这使得它非常快。万岁!
问题是,由于partials的数量,第一次运行,写入缓存时,需要很长时间,请求超时(但其他时间真的很快)
我也使用sidekiq(但这个问题与任何后台处理器有关)
有没有办法将这些部分保存在后台进程中,以便错过缓存(由于过期)的用户不会超时?所以我会检查所有部分,那些缓存过期(或即将过期)的部分我会重新缓存它们吗?
我正在做一些项目并且遇到了类似的问题。实际上,只有在清理缓存后立即加载的页面和加载问题才存在问题。我用另一种方式解决了它(我没有像 sidekiq 这样的东西,所以也许它对你来说不是正确的解决方案,但也许会有帮助)
我所做的是,在清理缓存后立即调用一个open()
方法并将有问题的 url 作为参数,如:
open('http://my-website/some-url')
因此,在清理缓存后,该 url 被调用并自动创建一个新的缓存。我们以这种方式迅速解决了这个问题。我知道一些后台工作人员会是更好的解决方案,但对我来说它有效。
只是说,我们的缓存是由 cron 清理的,而不是手动清理的。
更新
或者如果你想手动清理缓存,你可以在清理缓存调用后open('http://my-website/some-url')
使用sidekiq(我没有尝试过,这只是一个想法)。
当然,我的问题是只有一页,但如果你想要整个网站,它会让事情变得复杂。
我只知道preheat gem,但我认为它仍然不够复杂,无法满足我的需要。再加上它已经很久没有维护了。