I';我有一个django网站,上面有大量的javascript,但是我的客户机的连接性很差——如何优化?
我们正在为一些客户托管django服务,这些客户使用的是非常糟糕且断断续续的连接。非洲部分地区的卫星和GPRS连接尚未从最近的光缆登陆中受益 我整合了javascripts并使用了小型化版本,试图清理样式表,还有什么不 像一个好的django实现者一样,我让apache提供所有静态信息,如css和JS以及其他静态媒体。我已经启用了apachemodulesI';我有一个django网站,上面有大量的javascript,但是我的客户机的连接性很差——如何优化?,django,apache,caching,Django,Apache,Caching,我们正在为一些客户托管django服务,这些客户使用的是非常糟糕且断断续续的连接。非洲部分地区的卫星和GPRS连接尚未从最近的光缆登陆中受益 我整合了javascripts并使用了小型化版本,试图清理样式表,还有什么不 像一个好的django实现者一样,我让apache提供所有静态信息,如css和JS以及其他静态媒体。我已经启用了apachemodulesdeflate(对于gzip)和expired,以尽量减少javascript包的重新传输(主要是jQuery的巨大成本)。我还启用了djan
deflate
(对于gzip)和expired
,以尽量减少javascript包的重新传输(主要是jQuery的巨大成本)。我还启用了django的gzip中间件(但与apache的deflate结合起来似乎没有多大作用)
主要问题-优化带宽利用率还需要做些什么
- 头文件中是否有django优化,或者不确保“已经看到的数据”不会通过网络传输李>
- django缓存框架似乎是针对服务器优化而定制的(尽量减少对数据库的影响)-这如何转化为实际的带宽利用率
- apache上还有哪些其他调整可以确保浏览器不会试图获取它已经拥有的数据
ConditionalGetMiddleware
可能会很有用。我认为它可能会帮助您解决第一个要点
编辑:这可能是一个很好的起点:您的一些优化对于提高服务器的性能很重要,但不要将它们与优化带宽利用率混淆。换句话说,gzip/deflate是相关的,但Apache提供静态内容却不是(尽管它很重要) 现在,对于您的问题,您需要看三件事:发送了多少数据,需要多少连接来获取数据,以及连接有多好 使用deflate/gzip、expires、最小化javascript等主要涉及第一个方面。因此,我只能添加一两件您可能不知道的事情。首先,您应该升级到Django 1.1,如果您还没有,因为它更好地支持Django视图的ETags/expires头。您可能已经有了这些hea对于Apache中的静态数据,DER可以正常工作,但如果您使用的是较旧的Django,则动态视图中的DER(可能)设置不正确 对于下一个领域,即连接数,您需要将javascript和css文件整合到尽可能少的文件中,以减少连接数。将图像文件整合到单个“sprite”图像中也非常有用。有几个Django项目可以处理此方面:,(这是唯一一个将创建图像精灵),您也可以看到
关于连接有多好的最后一个方面,您应该按照Alex的建议查看全球CDN,或者至少将您的站点托管在离您的用户更近的ISP上。这对非洲来说可能很困难,根据我的经验,非洲甚至无法与欧洲ISP建立良好的连接(至少南部非洲……北非可能更好).您使用firebug或safari的开发者模式来评测页面了吗?它们是确定不同元素(js/html/images/css/etc)的实际时间和带宽成本的好工具。firebug的Yslow插件也是一个方便的评测工具。