gpt4 book ai didi

ruby-on-rails-4 - 从 Rails 中的数据库表加载站点导航的高性能方法

转载 作者:行者123 更新时间:2023-12-03 19:38:38 24 4
gpt4 key购买 nike

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

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

从表中加载导航而不被数据库查询命中的最佳方法可能是什么?

最佳答案

为避免每次请求都命中数据库,请使用 memcache 或 redis 缓存结果。
但是,缓存是一个巨大的话题,并且存在许多缓存策略。正如您的问题所暗示的那样,缓存过期是本主题的难点,而不是缓存。
当谈到过期技术时,在数据库方面,俄罗斯娃娃缓存现在被认为是最佳实践。如果您的数据没有改变(这意味着您无需担心缓存过期),您也许可以通过页面缓存来解决问题——如果是这样,算您自己幸运。如果它只是偶尔更改,则 Action 缓存可能是有序的。否则,我强烈建议对 View 页面的某些部分进行片段缓存,并为从数据库中获取耗时的单个方法进行模型缓存。
总的来说,在使用缓存进行性能优化时,先高后低 .付出更少的努力,您将获得更大的收获。
从高到低,您可以使用的某些类型的缓存是:

  • HTTP caching (不缓存您的服务器,但涉及用户的浏览器通过读取 HTTP header 在本地缓存内容)
  • Page caching (内存缓存)
  • Action Caching (内存缓存)
  • Fragment caching (内存缓存) 或 Russian doll caching (一种片段缓存)
  • Model caching (内存缓存)

  • 其他帮助您入门的资源:
    缓存键上的 Railscast(俄罗斯娃娃缓存依赖它们工作): 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

    关于ruby-on-rails-4 - 从 Rails 中的数据库表加载站点导航的高性能方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32085899/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com