代码之家  ›  专栏  ›  技术社区  ›  Mridang Agarwalla

我可以在Django中使用gzip javascript和css文件吗?

  •  4
  • Mridang Agarwalla  · 技术社区  · 14 年前

    我尝试分析我的Web应用程序,报告的瓶颈之一是缺少gzip压缩。我开始在Django中安装gzip中间件,得到了一些帮助,但一份新的报告显示,它只是gzipping HTML文件,即Django处理的任何内容。有没有一种方法可以让中间件gzip成为我的CSS和JS?

    有人能回答我下面的问题吗?我有点迷路了。

    • 我可能弄错了,但是 人们对CSS和JS进行gzip, 他们不是吗?
    • Django不压缩吗 一些浏览器的JS和CSS 兼容性问题?
    • 正在压缩 把同样的东西缩小?

    谢谢。

    4 回复  |  直到 7 年前
        1
  •  16
  •   Daniel Roseman    14 年前

    你的CSS和JS应该 在你的生产系统上进行Django测试。您需要配置Apache(或nginx或其他)来提供这些服务,当您这样做时,您将能够在那里而不是在Django中设置gzip压缩。

    不,压缩和缩小是不一样的。gzip压缩是由服务器在满足您的请求时动态完成的,浏览器在收到文件时透明地解压缩文件。缩小是从文件中删除注释和空白的过程,有时将多个文件连接到一个文件中(即一个CSS和一个JavaScript,而不是多个)。这是在您将文件部署到服务器上时完成的——通过django compress,如ashok所建议的,或者通过类似 YUI compressor 浏览器不会尝试重建原始文件-这是不可能的,也是不必要的。

        2
  •  4
  •   yfeldblum    14 年前

    您应该考虑将Django应用程序放在HTTP反向代理之后。

    您可以将Apache配置为Django应用程序的反向代理,尽管在这种情况下,许多人似乎更喜欢使用nginx或lighttpd。

    HTTP反向代理基本上是直接在Web应用程序前面设置的代理。浏览器从反向代理发出请求,反向代理将请求转发到Web应用程序。反向代理还可以做一些有趣的事情,比如处理SSL、处理gzip压缩所有响应以及处理静态文件。

        3
  •  2
  •   Nathan Arthur Diego Somar    7 年前

    按照DanielRoseman的建议,“你的CSS和JS不应该在你的生产系统上通过Django”

    如果你想通过姜戈发球,那么 您可以使用 django-compressor , django-compress

        4
  •  1
  •   Mridang Agarwalla    14 年前

    谢谢大家。

    似乎Django中的gzip中间件 压缩CSS和JS。

    我使用Google的Firebug页面速度插件来分析我的页面,它似乎是基于本地缓存中CSS和JSS的旧副本(非gzip版本)生成报告。从启用gzip中间件之前,这些副本就在那里。我刷新了缓存,报告显示的结果似乎完全不同。