2010-10-19 67 views
4

我试着分析我的web应用程序,报告的瓶颈之一是缺少gzip压缩。我开始在Django中安装gzip中间件,并获得了一些提升,但是一个新的报告显示它只是对gmail文件进行gzip压缩,也就是Django处理的任何内容。有没有办法让我的kludge/hack/force/make中间件gzip我的CSS和我的JS?我可以在Django中压缩JavaScript和CSS文件吗?

有人请回答我的问题。我已经有点失落了。

  • 我可能会得到它错了,但 人gzip压缩CSS和JS的, 不是吗?
  • Django不压缩 JS和CSS对于某些浏览器 兼容性问题?
  • 正在压缩 并缩小相同的东西?

谢谢。

回答

1

谢谢大家。

看来,Django中的Gzip中间件DOES压缩CSS和JS。

我正在使用Google的Firebug的Page Speed插件来分析我的页面,看起来它是基于我本地缓存中的CSS和JS的旧副本(非gzipped版本)生成报告。这些副本在我启用Gzip中间件之前就已存在。我刷新了缓存,看起来报告完全显示了不同的结果。

2

关注丹尼尔·罗斯曼的建议,“你的CSS和JS不应通过Django的可以去您的生产系统上”

如果你想通过Django的服务,然后 可以压缩CSS,JS文件使用django-compressordjango-compress

4

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

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

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

14

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

不,压缩和缩小不是一回事。 GZip压缩是在服务器响应您的请求时动态完成的,并且浏览器在收到文件时会透明地解压缩文件。缩小是从文件中移除注释和空白的过程,有时将多个文件连接成一个(即一个CSS和一个JavaScript,而不是每个文件都有很多)。这是在您将文件部署到服务器时完成的 - 按照Ashok的建议,通过django-compress或通过外部类似于YUI compressor的东西,并且浏览器不尝试重建原始文件 - 这是不可能的,也是不必要的。

相关问题