django - Django : Enabling the cached template loader

标签 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)

根据docs的说明,启用缓存的模板可能会对性能产生重大影响。所以我尝试添加此设置
TEMPLATE_LOADERS = (
    ('django.template.loaders.cached.Loader', (
        'django.template.loaders.filesystem.Loader',
        'django.template.loaders.app_directories.Loader',
    )),
)

我所有的模板都在app/templates中。我没有使用太多的模板片段\include并且我所有的应用程序标签(〜4)都是线程安全的。在此 session 上查看数据库跟踪时,我在9ms内返回了6个查询-这不是延迟。

我认为效果报告没有任何区别。我在这里想念什么吗?我测试错了吗?

最佳答案

缓存的模板加载器仍然需要呈现模板。节省的原因是不必每次都从文件系统中再次读取模板,从而节省了IO。

如果要缓存模板,请查看{%cache%}模板标签。但是请注意,您需要包括正确的 key 。

关于django - Django : Enabling the cached template loader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24968505/

相关文章:

python - Django 想要打印今天的日期和时间

c++ - 如何绕过 C++ 无法使用 lambda 匹配模板中的函数类型

python - create() 需要 1 个位置参数但给出了 2 个? Django

c++ - 模板命名

asp.net-mvc - 尝试使用MVCScaffolding创建有问题的 View

python Cachetools 项目可以有不同的 ttl 吗?

caching - AppFabric 超时通知

regex - Varnish 3 VCL正则表达式

python - 使用django提交后如何保留html表单数据?

django - 使用 Django Treebeard 获取祖先时如何防止 N+1 查询?