gpt4 book ai didi

python - 优化 Django

转载 作者:太空宇宙 更新时间:2023-11-03 11:05:18 26 4
gpt4 key购买 nike

我的页面加载速度有问题。

现在加载页面大约需要 7 秒,Django 处理需要 2~3 秒。

明显的问题是我缺乏架构知识,平均执行 50 个查询,如访问页面时“Django 调试工具栏”所示,但大多数查询就像“昨天的快照(按某些东西分组) "或 "昨天之前的每日快照(按某物分组)"并且不必每次都更新。

我想到了使用内存缓存或为准备可能的数据类型创建新表。

对于这类问题有什么约定或设计模式吗?

示例查询是这些(我相信他们一定不会每次都查询昨天的数据或上个月的数据):

SELECT `sample_salestarget`.`id`, `sample_salestarget`.`country_id`,                    `sample_salestarget`.`year`, `sample_salestarget`.`month`, `sample_salestarget`.`sales`  FROM `sample_salestarget` WHERE (`sample_salestarget`.`country_id` = "abc" AND `sample_salestarget`.`month` = 8 AND `sample_salestarget`.`year` = 2012 )

SELECT `sample_dailysummary`.`id`, `sample_dailysummary`.`country_id`, `sample_dailysummary`.`date`, `sample_dailysummary`.`pv_day`, `sample_dailysummary`.`pv_week`, `sample_dailysummary`.`pv_month`, `sample_dailysummary`.`active_uu_day`, `sample_dailysummary`.`active_uu_week`, `sample_dailysummary`.`active_uu_month`, `sample_dailysummary`.`active_uu_7days`, `sample_dailysummary`.`active_uu_30days`, `sample_dailysummary`.`paid_uu_day`, `sample_dailysummary`.`paid_uu_week`, `sample_dailysummary`.`paid_uu_month`, `sample_dailysummary`.`sales_day`, `sample_dailysummary`.`sales_week`, `sample_dailysummary`.`sales_month`, `sample_dailysummary`.`register_uu_day`, `sample_dailysummary`.`register_uu_week`, `sample_dailysummary`.`register_uu_month`, `sample_dailysummary`.`pay_count_day`, `sample_dailysummary`.`pay_count_week`, `sample_dailysummary`.`pay_count_month`, `sample_dailysummary`.`total_user`, `sample_dailysummary`.`inv_access_uu`, `sample_dailysummary`.`inv_sender_uu`, `sample_dailysummary`.`inv_accepted_uu`, `sample_dailysummary`.`inv_send_count`, `sample_dailysummary`.`memo`, `sample_dailysummary`.`first_charge_uu` FROM `sample_dailysummary` WHERE `sample_dailysummary`.`date` = 2012-09-07 AND `sample_dailysummary`.`country_id` = "abc" )

最佳答案

使用 Memcached真的可以为你加快速度。但是,这确实带来了问题。在动态页面上,您必须格外小心,以免在需要时显式使缓存失效。

与 Memcached 一起,尝试 johnny-cache这在缓存你的 django ORM 查询方面做得很好

此外,利用 Django's session variables越远越好。 (如果您使用的是 Memcached,请尝试使用 cached_db session 引擎。)您可以保存在整个 session 期间保持一致的对象(如您的用户配置文件设置)。这样您就可以再次减少 sql 调用的次数。

如果你真的真的需要快速加载页面.. 也许尝试加载你的页面,然后使用 Celery 异步调用你的 sql 语句并以 AJAXy 方式加载您的结果。

关于python - 优化 Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12320472/

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