Django:启用缓存的模板加载器

hak*_*aki 6 django templates caching

我在几种情况下描述了我的应用程序,我得出的结论是我的瓶颈是模板渲染,例如转储

61323 function calls (59462 primitive calls) in 0.827 seconds

   Ordered by: cumulative time

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000    0.827    0.827 /home/haki/src/CalcSite/calc/views.py:279(home)
        1    0.000    0.000    0.815    0.815 /usr/local/lib/python2.7/dist-packages/django/shortcuts/__init__.py:31(render)
      3/1    0.000    0.000    0.814    0.814 /usr/local/lib/python2.7/dist-packages/django/template/loader.py:151(render_to_string)
      4/1    0.000    0.000    0.808    0.808 /usr/local/lib/python2.7/dist-packages/django/template/base.py:136(render)
      5/1    0.000    0.000    0.808    0.808 /usr/local/lib/python2.7/dist-packages/django/template/base.py:133(_render)
    286/1    0.002    0.000    0.808    0.808 /usr/local/lib/python2.7/dist-packages/django/template/base.py:836(render)
    714/2    0.000    0.000    0.808    0.404 /usr/local/lib/python2.7/dist-packages/django/template/debug.py:76(render_node)
        1    0.000    0.000    0.808    0.808 /usr/local/lib/python2.7/dist-packages/django/template/loader_tags.py:100(render)
        6    0.000    0.000    0.803    0.134 /usr/local/lib/python2.7/dist-packages/django/template/loader_tags.py:48(render)
Run Code Online (Sandbox Code Playgroud)

根据文档启用缓存模板可以对性能产生重大影响.所以我尝试添加此设置

TEMPLATE_LOADERS = (
    ('django.template.loaders.cached.Loader', (
        'django.template.loaders.filesystem.Loader',
        'django.template.loaders.app_directories.Loader',
    )),
)
Run Code Online (Sandbox Code Playgroud)

我的所有模板都在app/templates.我没有使用太马赫模板片段\ includes和我的所有应用程序标签(~4)都是线程安全的.查看此会话中的db跟踪,我在9ms内返回了6个查询 - 这不是阻止.

我认为绩效报告没有任何差异.我错过了什么吗?我测试错了吗?

dal*_*ore 7

缓存的模板加载器仍然需要呈现模板.节省来自于每次都没有从文件系统再次读取模板,从而节省了IO.

如果要缓存模板,请查看{%cache%}模板标记.但请注意,您需要包含正确的密钥.