我在几种情况下描述了我的应用程序,我得出的结论是我的瓶颈是模板渲染,示例转储
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)
根据docs启用缓存模板会对性能产生重大影响。所以我尝试添加此设置
TEMPLATE_LOADERS = (
('django.template.loaders.cached.Loader', (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
)),
)
我的所有模板都在app/templates
。我没有使用太马赫模板片段\ includes和我的所有应用程序标签(~4)都是线程安全的。查看此会话中的数据库跟踪,我在9毫秒内返回了6个查询 - 这不是暂停。
我认为绩效报告没有任何差异。我错过了什么吗?我测试错了吗?
答案 0 :(得分:6)
缓存的模板加载器仍然需要呈现模板。节省的原因是每次都没有从文件系统再次读取模板,从而节省了IO。
如果要缓存模板,请查看{%cache%}模板标记。但请注意,您需要包含正确的密钥。
答案 1 :(得分:4)
从Django 1.8+开始,你将它放在OPTIONS
block of the TEMPLATES
setting.