2009-08-06 19 views
2

我们为一些使用真正非常差和间歇性连接的客户主持django服务。非洲部分地区的卫星和GPRS连接尚未从最近登陆的光缆中受益。我有一个Django网站,有很多javascript,但我的客户有可怕的连接 - 如何优化?

我已经巩固了JavaScript和二手minificatied版本,试图清理样式表,并没有什么...

就像好Django的实施者,我让Apache处理起来都像静态信息CSS和JS等静态媒体。我已经启用apache模块deflate(用于gzip)和expired来尽量减少javascript包的重新传输(主要是jQuery的巨大成本)。我也启用了django的gzip中间件(但这与apache的deflate结合起来似乎没有多大作用)。

主要问题 - 还有什么可以优化带宽利用率?

  • 在头文件中是否存在django优化或不确保“已经看到的数据”不会通过网络传播?
  • Django缓存框架似乎是针对服务器优化量身定做的(最小化数据库) - 这是如何转化为实际的带宽利用率?
  • 对Apache有什么其他的调整,以确保浏览器不会尝试获取它已有的数据?
+2

你用firebug或safari的开发者模式来分析页面吗?它们是确定不同元素(js/html/images/css/etc)的实际时间和带宽成本的好工具。 Yslow萤火虫插件也是一个方便的剖析工具。 – Mark 2009-08-06 02:30:23

回答

1

一些你自己的优化是绞更好的表现出你的服务器是重要的,但不要以优化带宽利用率混淆。换句话说gzip/deflate是相关的,但是Apache服务静态内容不是(尽管它很重要)。

现在,对于您的问题,您需要查看三件事情:发送多少数据,获取数据需要多少连接以及连接有多好。

你大多有第一个使用deflate/gzip,过期,javascript等最小化的区域,所以我只能添加一两个你可能不知道的东西。首先,如果你还没有升级到Django 1.1,那么你应该升级到Django 1.1,因为它可以更好地支持Django视图的ETags/Expires头文件。你可能已经有了这些头文件可以正确处理来自Apache的静态数据,但是如果你使用的是旧Django,他们(可能)在动态视图上没有正确设置。

对于下一个区域的连接数量,您需要将您的javascript和css文件合并为尽可能少的文件以减少连接数量。也可以将你的图像文件整合到一个单独的“精灵”图像中。有几个Django项目可以处理这方面的问题:django-compressdjango-media-bundler(这是唯一一个将创建图像精灵的项目),您还可以看到this SO answer

对于连接有多好的最后一个领域,您应该像Alex所建议的那样查看全球CDN,或者至少将您的站点托管在更靠近用户的ISP处。这对非洲来说可能很艰难,根据我的经验,甚至连欧洲ISP(至少南部非洲......北非都可能更好)都没有体面的连接。

1

您可以将jQuery委托给可能与非洲有更好连接性的CDN,例如google(并且它是免费服务!)。除此之外,我推荐每一个书面作品(或视频中说的都有很多这样的作品) - Steve Souders,尽管他的谈话,书籍和散文对每一位网络开发人员都是无价的,但我认为他们对低价服务带宽受众(例如,他的最新书籍和演讲中提到的一个技巧是关于世界上很大一部分浏览器没有从压缩或gzip中获得压缩效益 - 这与浏览器本身无关,而是涉及到代理和防火墙事情错了,所以“手动压缩”仍然是重要的!)。

相关问题