从Rails中的DB表加载站点导航的高效方法

时间:2015-08-19 03:07:49

标签: ruby-on-rails-4 caching sqlite

我一直在研究Rails 4应用程序,我需要将应用程序的主导航存储在数据库表中。原因是主导航是一个类别列表。这些类别与其他表格相关联。我希望我的网站导航与类别列表保持同步。

我这样关心的是应用程序会在每个请求上进行数据库查询。我想知道是否有一种缓存方法,但在更改数据库中的类别时仍然无效。

什么是从表中加载导航但却没有被数据库查询命中的最佳方法?

1 个答案:

答案 0 :(得分:1)

为避免每次请求都按下DB,请使用memcache或redis缓存结果。

但是,缓存是一个很大的主题,并且存在许多缓存策略。正如您的问题提示,缓存过期是本主题的难点,而不是缓存。

说到过期技术,在数据库方面,俄罗斯玩偶缓存现在被认为是最佳实践。如果您的数据没有改变(这意味着您不需要担心缓存过期),您可以使用页面缓存 - 如果是这样,请自己算一算。如果它只是偶尔改变,动作缓存可能是有序的。否则,我强烈建议对视图页面的部分内容进行片段缓存,并为从数据库中提取时耗时的单个方法进行模型缓存。

总体而言,在使用缓存进行性能优化时,从高处开始然后变低。您将获得的收益将更大,更省力。

从高到低,您可以使用某些类型的缓存:

让您入门的其他资源:

缓存键上的Railscast(俄语Doll缓存依赖于它们起作用):http://railscasts.com/episodes/387-cache-digests

高级缓存指南:http://hawkins.io/2012/07/advanced_caching_revised/

不是免费的,但我发现这个系列真正让我理解了各种形式的缓存: http://www.pluralsight.com/courses/rails-4-1-performance-fundamentals