加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Django缓存 – 如何设置代码以避免重复缓存逻辑?

发布时间:2020-12-20 13:27:27 所属栏目:Python 来源:网络整理
导读:我开始分析我的应用程序并发现有一段代码需要比其他代码花费更长的时间来完成.在视图中,我正在从数据库中检索一些数据并对其进行一些转换.在模板中,有一个过滤器,它将获取此转换后的数据并转换为 HTML. 我意识到我可以利用缓存,因为这个组件不经常改变,但我
我开始分析我的应用程序并发现有一段代码需要比其他代码花费更长的时间来完成.在视图中,我正在从数据库中检索一些数据并对其进行一些转换.在模板中,有一个过滤器,它将获取此转换后的数据并转换为 HTML.

我意识到我可以利用缓存,因为这个组件不经常改变,但我想知道最好的方法是什么.我可以缓存数据库调用/转换的结果,但我也可以缓存模板片段.看起来很奇怪,我需要缓存两件事才能获得最佳效果,所以我想我的代码应该采用不同的结构,所以我只需要将数据缓存在一个位置.

我的一个想法是从模板过滤器函数中进行数据库调用,但我一直在尝试将模型代码保留在模板过滤器之外.

处理这类问题的最佳方法是什么?

解决方法

如果转换可以表示为复杂的查询集,则可以在模板中对w / o缓存进行评估.如果没有,你可以

>在缓存块内的模板标签中执行逻辑
>包装逻辑并将其传递给渲染,通常采用闭包或模型方法的形式
>只做渲染缓存,只要渲染过程很简单
>在TemplateResponse的帮助下检查SSI的可能性
>编写代码以在视图中检查和使用模板缓存,考虑可能的种族写和狗堆问题.

此外,对于queryset缓存,您可以尝试johnny-cache以及django-cache-machine.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读