【问题标题】:Can I gzip JavaScript and CSS files in Django?我可以在 Django 中压缩 JavaScript 和 CSS 文件吗?
【发布时间】:2011-04-27 11:42:03
【问题描述】:

我尝试分析我的 Web 应用程序,但报告的瓶颈之一是缺少 gzip 压缩。我继续在 Django 中安装 gzip 中间件并获得了一些提升,但一份新报告显示它只是 gzip 压缩 HTML 文件,即 Django 处理的任何内容。有没有一种方法可以让我的 CSS 和我的 JS 也可以合并/破解/强制/制作中间件 gzip?

有人可以在下面回答我的问题吗?我对此有点迷茫。

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

谢谢。

【问题讨论】:

    标签: python django compression gzip static-files


    【解决方案1】:

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

    不,压缩和缩小不是一回事。 GZip 压缩由服务器在处理您的请求时动态完成,浏览器在收到文件时透明地解压缩文件。缩小是从文件中删除 cmets 和空白空间的过程,有时将多个文件连接为一个(即一个 css 和一个 javascript,而不是每个文件很多)。这是在您将文件部署到服务器时完成的 - 正如 Ashok 建议的那样,通过 django-compress 或通过 YUI compressor 之类的外部工具,并且浏览器不会尝试重建原始文件 - 这是不可能的,并且没必要。

    【讨论】:

      【解决方案2】:

      您应该考虑将 django 应用程序置于 HTTP 反向代理之后。

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

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

      【讨论】:

        【解决方案3】:

        谢谢大家。

        似乎 Django 中的 GzipMiddleware DOES 压缩了 CSS 和 JS。

        我正在使用 Google 的 Firebug 页面速度插件来分析我的页面,它似乎是根据我本地缓存中 CSS 和 JS 的旧副本(非压缩版本)生成报告。这些副本在我启用 Gzip 中间件之前就已经存在。我刷新了缓存,似乎报告显示的结果完全不同。

        【讨论】:

          【解决方案4】:

          遵循 Daniel Roseman 的建议,“您的 CSS 和 JS 不应该在您的生产系统上通过 Django”

          如果你想通过 Django 服务,那么 可以使用django-compressor、django-compress压缩css、js文件

          【讨论】:

            猜你喜欢
            • 2011-09-01
            • 2011-02-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-12-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多