购物系统标志  
代理加盟 售后服务 关于我们 威博说吧
网上购物系统
网上销售系统 首 页 网上销售系统 购物系统 网上销售系统 网站建设 网上销售系统 虚拟主机 网上销售系统 网站推广 网上销售系统 网站维护 网上销售系统 支付方式
  网上开店新闻
·如何开网上商城/开
·高手来教你如何在网
·网上开店实用指导手
·网上开店实用指导手
·网上开店实用指导手
·一个成功的网上开店
more
  网上开店研究
·开一家民俗风情配饰
·开家个性花店
·开家特价书店
·网上购物防骗技巧
·创业成功案例
·如何开家饰品店/开
more
  分享互联网
·独立网店系统是淘宝
·新兴电子商务业态B
·网上开店:淘宝买卖
·电子商务人才培养应
·eBay易趣PK淘
·网上购物系统设计
more
  网上商店推广
·如何提高网站访问速
·如何提高站点的链接
·网店的生命是关注度
·怎样开化妆品店/网
·网上开店卖什么
·怎样开服装店
more
您的当前位置—首页--新闻中心开店推广—如何提高网站访问速度 从30秒到3秒的改变
如何提高网站访问速度 从30秒到3秒的改变

  速度慢的网站很可能在第一次就失去的用户,他们可以永远不会再来了。进行下面一步一步的优化工作,让你的网站访问速度从30秒到3秒的改变。下面以某网站的实际运行情况为例为大家讲解。 

  第一步,用Ajax提高用户体验 

  有的网站上链接字体的大小是根据点击次数决定,所以每次点击都要提交到服务器端并记录次数,再在客户端打开网站链接。这在localhost测试的时候没有发现问题,但是部署到服务器上,会感到明显的等待。解决办法就是用Ajax。用户点击网站链接后就直接打开,再通过Ajax将点击的事件提交到服务器端记录。这样用户感觉不到任何延时。 

  第二步,将逻辑移到客户端的javascript中 

  在开始的时候,“网站标签高亮”和“手气不错”的功能都是提交到服务器端操作,然后返回结果的。其实,很多逻辑是可以移到客户端,由javascript来实现的。Javascript非常强大,可以完成很多复杂的逻辑。将逻辑移到客户端的javascript中,可以很有效的减少和服务器通讯的次数,获得更好的访问速度。 

  第三步,解决进程的 

  由于采用的是fastCGI的方式,配置了django.fcgi。可是,在系统进程中,有大量的django.fcgi进程被标记为 < defunct>(失去功能)。这些进程会导致服务器有时无法正常访问。开始尝试用命令来kill掉这些进程,但是很快发现这无法从根本上解决问题。后来,一个老外在blog上提到一个解决方案,将django.fcgi改名为dispatch.fcgi。原来,dispatch.fcgi是一个dreamhost的系统进程,它的健壮性是可以得到保障的。果然,将django.fcgi改名为dispatch.fcgi后,这样的现象再没有出现。 

  第四步,优化SQL语句 

  SQL语句的执行通常也是一个很花费时间的操作。经过检查,我发现我的一条SQL语句,是一个嵌套三层的子表查询。而这条SQL还必须是一个Raw SQL,即不能采用django的OR Maping。这意味着不能被cache缓存,每次都是真刀真枪的执行。更失败的是,经过我的分析,这条SQL完全可以不执行。这是一次设计上的失误,标准的over design(过渡设计)。当时,我是想通过数据库得到一个最精确的统计值。后来发现,这个值完全可以用一个近似的常量代替。优化SQL,尤其是避免不必要的SQL执行,带来的效果是非常明显的。 

  第五步,尽量减少页面大小 

  随着添加网站越来越多,发现django生成的首页已经达到了80k。这是一个非常不能被接受的数字。开始检查页面,很快发现了线索。 第一,因为偷懒,页面中很多layout是用空格( )实现的。第二,因为为了增加代码可读行,调试方便,每行生成的页面都增加换行符 (\n)。第三,最糟糕的是,大量的用了inline css。就是将css style直接嵌入标记块中。于是,我立即动手,用css的align解决layout,去掉\n,将inline css抽象到独立的css文件中。这样下来,在不更改任何内容的情况下,80k变成了57k。(补充:由于网站链接大部分是打开新窗口,所以用了大量的 target=_blank。在ylsdd的提示下,在html的head里增加了,又节约了4k。) 

  第六步,用gzip进行页面压缩 

  当把页面优化结果贴到了smth bbs上,却被直接泼了盆凉水。原来百分之二十几的优化结果,实在太一般了。ylsdd给了一个很重要的线索,deflate。原来apache的 deflate模块可以把文件进行gzip压缩,压缩后的文件传到浏览器后再被解压。主流的浏览器都支持这种gzip的解压操作。于是,我在apache 的配置文件中加入了Add OutputFilter DEFAULT html css js的语句。经过测试,css,js这些文本文件的压缩后都只有原来尺寸的25%。这里,和大家分享一个网站http://www.port80software.com/products/httpzip/compresscheck 它的作用是检测你的网站是否被压缩,以及压缩比率等。 

  第七步,回归静态页面 

  新的问题又来了。原来deflate只支持静态文件的压缩。而首页是django动态生成的,deflate模块没有进行压缩。网站的首页为什么不能是静态页面呢?于是,增加了一个runtime的api,这个api提供的是和原来一样由django动态生成的页面。同时,又写了一个 python的程序,通过urllib2模块下载这个动态生成的页面,并保存为index.html。将网站的root映射到index.html这个静态页面。最后,通过linux crontab定义一个行为,每五分钟执行一下这个python程序,生成新的index.html。值得一提的是,由于网络原因,python程序不一定每次都能准确完整的下载动态生成的页面。所以我们必须再进行一个校验算法。当页面大小要超过一定数字,页面中出现某个校验字符串的情况下,才保存 index.html。这样,每次用户提交的访问,不是由服务器端动态生成页面,极大的节省了服务器端的开销。而静态页面又可以有效的被deflate压缩。最后结果,首页被压缩为13k,为原来的22%。唯一的区别就是,新提交和推荐的网站不能立即出现在首页。但是这应该是可以被接受的。 

  至此,网站的优化工作基本完成。网站的访问速度从原来30秒以上,缩短到3秒左右,应该说算是一个飞跃。虽然,3秒的速度也不是非常快,但是,考虑到虚拟主机等客观原因,这个结果还是满意的。 

  以上的优化方案出自个人经验,并不一定适合所有网站。但是,它告诉我们一个事实。影响网站访问速度的不仅仅是服务器配置,网络带宽。也许,你糟糕的设计,低效率的方案也是致命的因素。应当注意的是,优化工作也不能匆匆上手。一定要仔细研究,具体情况具体分析,得到统计数据,找到真正的问题所在,再开始优化。相信自己,提高网站的访问速度并不是不可能。毕竟,Nothing is Impossible。祝大家成功。

                                             作者:《威博网络》

                                     [返  回]         [关闭本页]


上一篇: 如何提高站点的链接流行度
下一篇: 没有了

 

 
关于我们 ‖常见问题联系我们客户案例人才招聘友情连接

友情连接: 购物系统

版权所有:上海威博网络技术有限公司
地址:上海市杨浦区国定路335号2号楼905室(复旦大学对面) 邮政编码:200433
威博网络常年法律顾问
上海海华永泰律师事务所 吴英杰 律师

沪ICP备06027952号