Django的render_to_response是否每次都缓存未渲染的模板或从磁盘加载?

时间:2011-03-15 08:10:11

标签: django django-templates

从磁盘中获取模板比从memcached中取出模板慢得多,因此每次从磁盘加载它们都是浪费。

Django是否在内存或CACHE_BACKEND中缓存未渲染的模板,还是我必须自己实现?

4 个答案:

答案 0 :(得分:3)

Django也带有cached template loader

答案 1 :(得分:0)

我似乎无法找到文件系统加载器可能缓存模板的任何位置。确实看起来每次都会加载它们。

但这可能不是一个真正的问题。首先,文件系统加载器完全它所说的内容,它每次使用时都从磁盘读取模板。一旦进行了更改,它将始终获取对磁盘模板的更改。

如果您不想要这种行为,则可能需要使用不同的加载程序。事实上,这很容易做到;只是来自django.template.loader.filesystem.Loader的子类,重载load_template,并享受。

但是,我非常怀疑缓存。如果我要实现这样的解决方案,我会确保经常发生缓存驱逐。像每10秒一样。

答案 2 :(得分:0)

您必须自己启用缓存。默认情况下,每次渲染模板时,都会从磁盘读取,解析和渲染。

有许多方法可以在Django中实现缓存。所有这些都在Django's cache framework help page中描述。

根据您要实现的目标,您可以缓存整个请求或仅缓存模板块。阅读上面的页面了解详情。

答案 3 :(得分:0)

我怀疑如果每次都读取模板,它可能会在大多数时间内保留在内核的buffer cache中。只要你没有证明,你就不应该在这种优化上投入任何时间,这实际上是一种消耗性能的东西。