4

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

有人可以在下面回答我的问题。我对此有点迷失了。

  • 我可能弄错了,但人们确实 gzip 压缩 CSS 和 JS,不是吗?
  • 对于某些浏览器兼容性问题,Django 是否不压缩 JS 和 CSS?
  • 压缩和缩小是一回事吗?

谢谢。

4

4 回答 4

16

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

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

于 2010-10-19T13:23:05.463 回答
4

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

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

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

于 2010-10-19T13:22:04.717 回答
2

Thanks everyone.

It seems that the GzipMiddleware in Django DOES compress CSS and JS.

I was using Google's Page Speed plugin for Firebug to profile my page and it seems that it was generating reports based on old copies (non-gzipped versions) of the CSSs and JSs in my local cache. These copies were there from the time before I enabled the Gzip middleware. I flushed the cache and it seems that the reports showed different results altogether.

于 2010-10-20T07:44:01.167 回答
2

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

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

于 2010-10-19T13:11:59.073 回答