我开始分析我的应用程序并发现有一段代码需要比其他代码花费更长的时间才能完成。在视图中,我正在从数据库中检索一些数据并对其进行一些转换。在模板中,有一个过滤器,它将获取此转换后的数据并转换为HTML。
我意识到我可以利用缓存,因为这个组件不经常改变,但我想知道最好的方法是什么。我可以缓存数据库调用/转换的结果,但我也可以缓存模板片段。看起来很奇怪我需要缓存两件事以获得最佳效果,所以我想我的代码应该采用不同的结构,所以我只需要将数据缓存在一个位置。
我的一个想法是从模板过滤器函数中进行数据库调用,但我一直在尝试将模型代码保留在模板过滤器之外。
处理此类问题的最佳方法是什么?
答案 0 :(得分:1)
如果转换可以表示为复杂的查询集,则可以在模板中对w / o缓存进行评估。如果没有,你可以
此外,对于queryset缓存,您可以尝试johnny-cache以及django-cache-machine。
答案 1 :(得分:0)
您无需在视图中缓存并在模板片段中缓存。缓存的想法是,一旦你有缓存的东西,你从缓存中获取它,直到缓存密钥到期。
缓存数据库导致视图意味着编写一些特定于视图逻辑的代码,每次逻辑更改时您可能需要更改。
缓存模板片段是一种更好的方法,因为即使您更改模板“逻辑”,只要将片段保留在缓存块中,缓存就会继续工作。
另外,恕我直言,你越接近最后的缓存响应,缓存逻辑就越可靠。