Django:缩小HTML以提高页面加载速度的最佳实践

时间:2018-02-07 17:04:49

标签: django django-templates

关于https://developers.google.com/speed/pagespeed/insights/

的结果

可能只是用spaceless模板标签全局包装整个HTML?

   {% spaceless %}
   <!DOCTYPE html>
   <html>
      ...
   </html>
   {% endspaceless %}

或者它不安全并且有更好的方法吗?

4 个答案:

答案 0 :(得分:1)

我认为有一些选择。快速搜索后,我找到了StripWhitespaceMiddleware和另一个名为django-htmlmin的第三方应用。您需要确保这些包与您的python和Django版本兼容。另外,请查看this question about HTML minification in Django中的解决方案。

答案 1 :(得分:0)

您可以尝试Jinja2,在某些情况下,您可以实现十倍的加速。

检查Django docs以获取更多详细信息。

答案 2 :(得分:0)

我发现了两个三个解决方案:

  1. django.middleware.gzip.GZipMiddleware
  2. http://wiki.nginx.org/HttpGzipModule
  3. http://wiki.nginx.org/HttpStripModule
  4. Gzip应该做同样的事情 - 在传递html之前删除不必要的空格。

答案 3 :(得分:0)

我建议使用自定义模板加载器,该加载器会删除重复的空白字符。这种方法有两个优点:

  • 与缓存的模板加载器结合使用时,仅在模板编译期间进行空白条带化。另一方面,使用{%spaceless%}或中间件方法时,每次渲染模板时都会调用最小化。
  • 剥离空格可能更具侵略性-删除html标签,django标签和变量之间的空格。

经过研究,我发现了django-template-minifying-loader项目,但是有几个问题。在pull request with fixes被批准之前,我正在使用martinsvoboda/django-template-minifying-loader分支。

注意-如果要使用fork,则必须这样安装::

pip install -e git+https://github.com/martinsvoboda/django-template-minifying-loader@master#egg=django-template-minifying-loader