Rails 中的操作缓存和排队帖子

发布于 2024-07-25 12:10:57 字数 232 浏览 7 评论 0原文

我在 Rails 上有一个登陆页面,其中包含“博客”风格的帖子。 由于它是网站上访问量最大的页面,因此我使用操作缓存。 模型更改时缓存会被清除。

然而,当添加新的博客文章时,我希望能够在 --future-- 中创建帖子(类似于 Tumblr 中的排队帖子)。

因此,仅仅观察模型对于清除缓存来说不再起作用。

除了定期(每半小时)运行作业之外,还有其他更好的方法可以正确清除缓存吗?

I have a landing page on rails with "blog" style posts. Since it's the most visited page on the site, I'm using action caching. The cache is cleared upon a change of the model.

However, when adding new blog posts, i'd like to be able to create posts in the --future-- (a la queueing posts in Tumblr).

So simply observing the model won't work anymore for clearing the cache.

Is there any better way of clearing the cache correctly other than running the job periodically (every half hour) ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

心舞飞扬 2024-08-01 12:10:58

您可以使用过期缓存。 如果您的缓存后端是Memcached,则默认支持此功能。 否则,您需要创建一个缓存键,其中包含一个在定义的时间后使缓存过期的值。

或者您也可以采用其他方式。 而不是发布 published_at < 的记录 Time.now(我假设您当前的行为属于这种情况),您可以运行 cron 并更新状态数据库字段。 这样更新就会触发你的清理器并清除缓存。

第一个解决方案实际上是最好的。

You can use an expirable cache. If your cache backend is Memcached, this feature is supported by default. Otherwise, you need to create a cache key including a value that expires the cache after a defined amount of time.

Or you can also follow an other way. Instead of publishing records where publised_at < Time.now (I'm assuming your current behavior falls into this case), you can run a cron and update a status database field. In this way the update will trigger your sweeper and clear the cache.

The first solution is actually the best one.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文