当前位置:380元网站建设 虎网站 > 网站推广 > 正文

如何提高网站访问速度

发布日期:2010-11-18

如何提高网站访问速度

      2006年10月份,我开始对web开发产生了兴趣,并决定自己也尝试开发一个网站。在此之前,我做过3年的java application的开发,对web开发应该算一无所知。在比较了java,php,ror,和python后,我选择了基于python的web框架 - django 。到目前为止,我还认为这是一个明智的决定。Django高效的开发效率让我仅仅用一个月的业余时间,就基本完成了网站的开发。这是一个网络书签的网站,我加上了一些有意思的特性,让网站显得有些与众不同。

      我购买了域名和Dreamhost 的主机空间。Dreamhost支持django,并且第一年的费用只有180元人民币。2006年11月份,http://www.hpbookmarks.com 上线了。网友们发来了善意的评论,“很有创意”,“点意思”,“一些feature很不错”。同时,还有一个非常一致的意见就是,“访问速度太慢了”。其实,当时的情况不只是访问速度慢,而且是相当不稳定。很多时候是几个小时网站无法访问。当时,我并没有在意,因为我有两个自以为“合理”的解释。第一,我用的是国外最便宜的虚拟主机,国内访问慢是很正常的。第二,django的还处于0.95的状态,效率和稳定性方面有问题也正常。

      但是,我慢慢发现上面的解释不过是自己骗自己的借口。很多用dreamhost的网站,访问起来也很快。而且django也已经被成功应用在许多大型的网站。我开始认真考虑提高网站速度的问题了。毕竟,速度慢的网站很可能在第一次就失去的用户,他们可以永远不会再来了。终于,我进行了下面一步一步的优化工作,并且取得了一个看起来还不错的结果。

      第一步,用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 Output

苏州吴中海卡门禁楼宇跟虎网站签下网站建设协议

    海卡选用虎网站响应式自适应网站案例,此类案例是当今新潮流的网站程序,他除了具备商务型所有功能外,他的特点在于能自动识别互联网和移动网终端设备,既能适用在电脑上浏览同时又适用在平板电脑和各款手机上浏览都能自适应屏幕大小,是企业官网的选择佳品。海卡是经苏州市吴中区工商局审核的有资质公司,统一社会信用代码:913205066657985980。同时经国家工信部和江苏省通信管理局审核通过ICP备案;备案号...

       网站建设完毕之后在维护方面需要注意的问题 第一、网站内容    浏览网站时,我们会发现,大多数中小企业网站栏目划分趋于一致:企业简介、产品/服务介绍、联系方式等,在版式设计上也基本上是上下分栏、左右分栏等方式,不会利用富于企业特点的图形或文字装饰网站,网站设计没有个性,如果说这样的网站没有取得预期的效果并不为怪。这似乎成了一种模式,设计公司可以以此为模板套在大多数企业的网站中,这相对而言还不重要,网站的内容安排才更重要。    第二、技术...

       网络推广人员应重视的几点要求 一、明确网络推广的定义:   现在好多人整天说他懂得的网络推广方法很多,在企业的是都当企业人事部问及他们都会哪些网络推广方法的时候;他们会罗列出好多好多的网络推广方法。什么社区推广,论坛推广,软文推广,QQ推广,邮件推广,病毒式推广---等等!听的人事部的人员都打瞌睡.而当人事部问及:什么是网络推广的时候却变的哑口无言!我说的这个是个实例,就在我曾经面试的时候就碰到过这样的人。现在想想,还是很有意...

       如何提升企业做网站的质量 随着企业对建站要求的提升,做网站公司所要考虑的方面也有所增加。那么如何提升企业做网站的质量? 一、网站打开的速度要有所提升 速度一直是主要网站的终极目标,因为通常会有很多东西相互矛盾。例如,我们通常希望网站更加美观。这时,我们会选择散布一些图片或视频使得该网站的页面非常好看,但还有另一个问题,降低了网站的速度。 首先,在网站建设中必须保证网站的速度,应该做的是合理布局网页,尽可能地精简网页,不...

       成都成华施耐基电路板同虎网科技签署网站建设合作协定 施耐基是经成都市成华区工商局审核的正规企业,统一社会信用代码:91510108MA62M54W0R。同时经国家工信部和四川省通信管理局审核通过ICP备案;备案号:蜀ICP备13001186号。施耐基选用虎网站定制型网站案例,此类网站主要是按客户要求和提供的风格案例或效果图纸来做,这种属于仿制和定制型网站,是根据功能开发的难易度来评估报价的,价格相对较高,适合于大中型企业和有个性风格、个性功能需求的...

       企业网站设计网页设计的目的就是产生网站 网页设计的目的就是产生网站 。简单的信息如文字, 图片和表格, 都可以通过使用超文本标记语言、可扩展超文本标记语言等标记语言放置到网站页面上。而更复杂的信息如矢量图形、动画、视频、声频等多媒体档案则需要插件程序来运行, 同样地它们亦需要标记语言移植在网站内。

最新模板
少儿英语培训机构网站建设 培训公司网站建设
成人自考网站建设 成人培训网站制作设计版面
智能家居摆设设计网站建设 智能家居装修企业网站建设
铜螺母,铜螺丝,螺栓,螺钉工厂网站建设
废气处理设备,如活性炭吸附箱、RTO蓄热式氧化处理设备、光氧等离子复合设备 低温等离子设备 光氧催化设备等网企业网站建设
图文阅读