django:加速模板渲染性能的指南

标签 django performance django-templates

我将如何加速 Django 模板渲染?在 View 函数完全计算出它需要的任何内容之后,我的模板大约需要 1-2 秒来渲染。

我已经尝试在 View 中执行所有数据库访问,这样模板只访问 RAM 而不是数据库引擎。

我确实有很多include s-那里可能有问题吗?

最佳答案

我刚刚花了很多时间优化我的 django 模板代码。以下是对我有用的优化指南,但根据您的设置,您可能无法获得如此显着的加速。

  • 输入模板引擎 unicode ,而不是 str : Django 将所有变量强制转换为 unicode。这不需要太长时间,但如果 str模板中的许多地方都使用了变量,它可能会变成明显的延迟。这很容易解决,每当您将文本数据发送到 Django 渲染器时,请确保它是 unicode。
  • 将变量标记为 safe : Django 的自动安全措施非常好,但它们对性能的影响很小。如果您在模板中使用了许多变量,并且您知道它是安全的,那么请务必将其标记为这样。
  • 缓存编译模板 : 当您调用render_template_from_string , django 拉取模板,编译它,然后渲染它。 Django 可以轻松地缓存此过程的前两部分并将它们存储在内存中。您需要做的就是在您的 settings.py 中做一点小改动。要添加的文件cached.Loader给您的TEMPLATE_LOADERS .更多解释in the Django documentation .
  • 修复或不使用 endless pagination : 我发现endless pagination插件大大减慢了速度。那是因为它必须为每个页码加载一个新模板。我进入并破解它,直到我得到它做我想要的,但在你这样做之前,尝试删除它,看看你得到了什么样的性能改进。
  • 不要使用花哨的模板功能 : 继承、嵌套 block 、for 循环和包含都很棒,但它们会带来性能成本。使用它们时要非常小心,尽量不要进行多级继承。客户端渲染可能会更好地处理 for 循环。
  • 客户端渲染 :加速服务器端渲染的一个简单技巧是在客户端上进行。一种策略是在 django 模板中嵌入一个 json 结构,然后让 javascript 构建 HTML。这显然违背了 django 服务器端渲染的目的,但会导致加速。如果您必须在首屏下呈现内容(即用户不需要在页面加载时立即看到它),这将特别有用。

  • 执行上述操作将我在 GAE 实例上的复杂页面的渲染时间从大约 1.0S 减少到 250ms,但同样,您的里程可能会有所不同。

    关于django:加速模板渲染性能的指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8569387/

    相关文章:

    Linux,将 apt-get update 和 apt-get upgrade 组合在一起

    python - 如何验证跨外键的唯一性约束(django)

    django - 如何从 django 的开发服务器提供 Angular 2 应用程序?

    performance - 编译不安全的Haskell

    django - Django 中的存储后端是否处理删除旧的静态文件?

    performance - 为什么 CUDA 浮点程序在全速 FP64 模式下变得更快?

    c++ - 对两个连续测量进行基准测试时不一致

    javascript - 在 Django 模板中添加请求变量

    python - Heroku: “Process exited with status 127” 部署 python Django App 后

    django - 使用中间件或自定义模板标签来处理不经常更改的代码片段