我尝试分析我的Web应用程序,据报道的瓶颈之一是缺乏GZIP压缩。我开始在Django安装GZIP中间件,并有所提高,但是一份新报告表明,它只是gzzing html文件,即Django处理的任何内容。有什么办法可以kludge/hack/force/使中间件gzip我的CSS和我的JS吗?

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

  • 我可能弄错了,但是人们做了CSS和JS,不是吗?
  • Django是否不适用于某些浏览器兼容性问题的JS和CSS?
  • 压缩和缩小同一件事吗?

谢谢。

有帮助吗?

解决方案 4

感谢大家。

似乎Django中的Gzipmiddleware 压缩CS和JS。

我正在使用Google的页面速度插件来介绍我的页面,看来它是基于我本地缓存中CSSS和JSS的旧副本(非GZZERPECT版本)生成报告。这些副本从启用GZIP中间件的时间开始就在那里。我冲洗了缓存,看来报告完全显示出不同的结果。

其他提示

您的CSS和JS应该 不是 在您的生产系统上浏览Django。您需要配置Apache(或nginx或erthing)以服务这些服务,当您这样做时,您就可以在那里设置GZIP压缩,而不是在Django中。

不,压缩和缩小不是同一回事。 GZIP压缩是由服务器服务于您的请求时动态完成的,并且浏览器接收到该文件时会透明地解开该文件。降低是从文件中删除注释和白空间的过程,有时将多个文件串联为一个(即一个CSS和一个JavaScript,而不是每个JavaScript)。当您将文件部署到服务器时 - 通过Ashok所建议的Django -Compress来完成此操作,或者是由外部的东西 YUI压缩机, ,并且浏览器不会尝试重建原始文件 - 这是不可能的,而且是不必要的。

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

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

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

请遵循丹尼尔·罗斯曼(Daniel Roseman)的建议:“您的CSS和JS不应在生产系统上经历Django”

如果您想通过Django服务,则可以使用 django-compressor, django-compress

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top