gpt4 book ai didi

ruby-on-rails - 提高 Rails View 渲染的性能

转载 作者:IT王子 更新时间:2023-10-29 06:00:54 24 4
gpt4 key购买 nike

我有一个电子商务 Rails 应用程序,出于报告原因,我们需要输出客户在过去一年内在页面上下的订单。现在,数据集非常大,在单个页面上显示这些订单需要大量的 SQL 处理。此任务最初非常慢,因此我将所有必需的订单详细信息移至 Redis 服务器,现在数据的获取速度变得非常快,但我们还没有完全做到这一点。

这是我们拥有的:

Rendered **path**/sales_orders.html.haml within layouts/admin (39421.1ms)
Completed 200 OK in 44925ms (Views: 39406.8ms | ActiveRecord: 417.2ms)

该应用程序托管在 Heroku 上,如果请求花费的时间超过 30 秒,它就会被终止。如您所见,我们远远超出了该限制。大部分时间都浪费在渲染 View 上。

该页面包含一个日期过滤器,用户可以在其中选择要从中选择订单的日期范围。因此,缓存不是理想的解决方案,因为日期范围可能每次都发生变化。

知道如何做到这一点吗?

Redis keys的格式(以下是Redis Hash):

orders:2012-01-01:123
orders:yyyy-mm-dd:$order-id

用户只需提供一个日期范围,我就可以在订单命名空间下获取该日期范围内的所有键。

下面是我如何从 Redis 订单键中获取客户名称:

= REDIS.hget(order_key, "customer_name")

最佳答案

考虑使用 Heroku Scheduler 使用周期性任务构建报告添加在。只要最后一分钟的订单不需要包含在报告中,您就可以每晚构建报告并立即下载它们以供您在早上喝咖啡时阅读,甚至可以将它们邮寄给您(或任何需要阅读的人)他们。)

如果您需要交互式选择报告期间,您需要将请求排队并使用 background jobs 构建报告.

关于ruby-on-rails - 提高 Rails View 渲染的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11043159/

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