gpt4 book ai didi

ruby-on-rails - Rails 片段缓存 : would 100K+ fragments degrade performance?

转载 作者:行者123 更新时间:2023-12-04 06:13:21 25 4
gpt4 key购买 nike

我有一个包含大量数据的网站,我正在所有页面上进行“俄罗斯娃娃”缓存,如下所示:

# articles.html.haml
- cache "list of articles", expires_in: 15.minutes do
= render partial: "article", collection: @articles

# _article.html.haml
- cache article do
= article.body
= render partial: "comment", collection: article.comments

# _comment.html.haml
- cache comment do
= comment.body

这将创建 数十万 的片段。

1./tmp/cache 目录中有这么多片段文件会降低性能吗?

2. 旧的fragment自动过期,rail会自动删除吗?

附注。该站点驻留在具有 4GB 内存的单个 Ubuntu 服务器上。它没有使用 memcached 作为缓存存储,只是使用 Rails 开箱即用的基于标准文件的实现。

最佳答案

在某些时候,您必须问自己一个问题,缓存命中是否仍然比生成片段成本更低。如果答案是 (这可以进行基准测试),与未缓存的情况相比,这仍然可以提高性能。在物理(盘片)硬盘驱动器上存储数十万个缓存片段的情况下,我会非常警惕 I/O 瓶颈。如果这成为一个问题,您可以限制缓存策略的深度以减少文件数量。但是,请再次进行基准测试。命中率在这里是一个非常重要的统计数据,因为在这种特定情况下,高命中率将限制 I/O。

如果性能让您担心,还可以查看片段过期的频率。在您的特定情况下,每次发表评论时,“文章列表”都会失效。您目前每 15 分钟过期一次,但如果您希望输出保持一致,实际上应该在放置或编辑评论或文章后立即过期。如果您的文章列表每分钟有多个评论,那么您甚至可以在此处缓存单个评论是绝对正确的。如果 I/O 成为问题,您可以随时添加一些 RAM 并开始使用 memcached(或 redis,就此而言)。

但是,因为您有多层缓存,所以除了对父“文章列表”片段的点击之外,您可能完全没问题,只需对文件系统进行几次点击。

关于ruby-on-rails - Rails 片段缓存 : would 100K+ fragments degrade performance?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21258439/

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