我开始分析我的应用程序,发现有一段代码需要比其他代码更长的时间才能完成。在视图中,我从数据库中检索一些数据并稍微转换它。在模板中,有一个过滤器会将这些转换后的数据转换为HTML。Django缓存 - 如何设置我的代码以避免重复缓存逻辑?
我意识到我可以利用缓存,因为这个组件不会频繁更改,但我想知道最好的方法是什么。我可以缓存数据库调用/转换的结果,但我也可以缓存模板片段。看起来很奇怪,我需要缓存两件事才能获得最佳效果,所以我想我的代码应该有不同的结构,所以我只需要将数据缓存在一个位置。
我的一个想法是从模板过滤器函数中进行数据库调用,但我一直试图将我的模型代码保存在我的模板过滤器之外。
处理这类问题的最佳方法是什么?
是的 - 我明白这一点,这就是为什么我想尽量减少它。不幸的是,如果我只缓存模板片段,那么视图仍然会调用数据库来检索数据,因为那时它不知道将使用它的模板片段已被缓存。我如何构建项目来处理这个问题? – 2012-04-04 16:22:23
如果要在一个位置处理缓存,可以使用django缓存中间件来缓存请求,并假定需要更频繁地缓存片段,对通用缓存和模板片段使用不同的超时。 – ygneo 2012-06-06 22:55:26
是的 - 我最终重构了代码以使模板片段从缓存中检索或在视图中进行计算,因此全部在一个位置完成。 – 2012-06-07 13:53:02