【问题标题】: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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

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

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

      更新

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-14
        • 2011-06-26
        • 1970-01-01
        • 2023-03-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多