关于网站打开速度那点事
最近paperen我主要是在做新的博客,当然也会与宿友们打打机,所谓好好利用剩下的大学时间嘛~~而新博客也差不多了,前台基本可以了,现在正在修理后台。而在重修程序与整改的过程中确实也会有不少收获与进步,比如站点的框架,还有站点的性能上。?
而目前对于paperen而言,网站的性能主要是体现在站点打开速度上吧,固然这里说到的提升性能也只是程序上的方法,因为paperen对于服务器的配置真的接触得很少,什么图片与站点放在不同的服务器上,这种服务器上的部署paperen我就知道得很少了。所以如果您是想了解服务器方面提升站点性能知识的话,这篇东西应该就不是您所需的了,而此文章也不包括实际代码,或者以后会加上一些例子。?
首先paperen我想问问各位对于网站速度慢有什么看法?一个打开非常慢的网站是不会受欢迎的,苛刻地形容,如果你的网站在3秒后才能打开浏览者可能在2秒的时候就会叉掉,或者在1秒的时候就会叉掉……每个浏览者都喜欢快感,你不要让他们等得太久,也不要期望他们会去等待3秒,哪怕是1秒,paperen现在的博客在宿舍的环境中(805Kbps,有几个人在玩网游,有一个人在看视频)打开首页需要5,6秒。额……paperen我也不知道会不会曾经有浏览者会因为这个而停止访问我的博客,不过5,6秒这个也确实有点慢了,所以计划在新博客中将速度提升一下或者弥补一下。我们要知道让浏览者等待一秒是什么概念,更不用说让他们再等待多一秒了。?
1.减少与数据库交互的次数从而提升速度
传说中打开一个html页面比打开一个动态页面要快,其实也不能说是传说,那是肯定的,对于服务器而言在处理动态页面时是比处理静态页面时多了某些操作的,例如会去编译并解析动态页面中的一些脚本,而这些脚本可能会连接到数据库并获取一些数据,而连接数据库并获取数据花费的时间很可能就是占了等待时间的一半,固然对于一些数据量较大的网站首选的提升性能减低服务器压力的办法就是有针对地生成静态页。?
减少与数据库交互次数也不是说要为每个页面生成静态页,有时候伪静态也是挺不错的选择,所以有时候我们会用到缓存文件,对于缓存的定位就是放在程序与数据库之间,或者他就是数据库部分数据的克隆体。对于站点一些配置文件或者一些很基本的设置可以考虑生成其缓存文件,而在程序中直接将其引入便可以使用,从而能减少与数据库交互的次数。但是对于缓存我们还要考虑生成或更新的触发点,对于一些由后台(管理员)才能修改或者添加的操作可以使用主动更新,就是说缓存文件的更新动作发生在我们添加或者修改后,而如果是一些基本的数据(不知道怎形容了……)可以选择由浏览者触发,就是当浏览者访问页面的时候让程序判断某个缓存文件的时间是否超过我们所定义的缓存时间,是则更新缓存文件。?
2.图片加载
曾经在浏览某些多图片网站,特别是购物网站,图片加载会占了大部分带宽,虽然这并不属于程序的问题,但是不能忽略这个问题的存在,为什么我们要让第一次加载页面的时候就将这个页面所有图片都进行加载,能不能让浏览器决定加载什么图片,也就是延迟加载技术,你有注意paipai网的话就能明白这个技术真的太好了。下面这个链接是牛人们写的代码。
http://www.cnblogs.com/cloudgamer/archive/2010/03/03/ImagesLazyLoad.html
其次是页面样式中调用的图片,对于一些基本的图片元素可以考虑全部放在一张图片中,从而减少加载图片的次数与流量。这样说吧,如果你页面有三个图标
你将其做成三张图片,然后分别加载,这样占用的流量是这三张图片的大小加起来,但是如果你将三个图标放到一张图片中的话加载的话只是这张图片的大小,对于小量图标的时候确实是看不出问题所在,但是在图标多了之后就明显感觉到将图标都放在一张图片的好处了,我们可以使用背景的位置对图标进行分割显示(background-position)。
大家不妨看看这个(有啊的图片)http://co.youa.baidu.com/picture/r/mall/hp090617/images/sprites_hp.png
3.页面分块显示技术
如果你的首页真的是需要查询比较多的数据,那么最好让你的页面能够分块显示,比较形象地形容这种技术就像我们宿舍那天到某饭馆吃饭一样,他们老是一个一个菜轮流上的,而不是一次上完……你让浏览者等了一段时间才会看到页面还不如让他们先看到部分页面,这样就能“钓着他们”了并不会让他们觉得你的网站出现了问题而让他白等。?
4.模板语言的选用
有没有使用模板语言,例如smarty,paperen觉得这个要根据你项目具体考虑了而不是都要用到,例如paperen这个博客,就觉得没有太多必要使用了,因为都是paperen设计页面与编写代码的,所以就没必要分得太细了,而且可能还会影响到速度,所以对于模板语言的使用大家还是有必要斟酌一下。?
而关于更多web开发的高性能大家可以看看这里,“巨人们”都有很多这方面的方法与资料了。能站在巨人的肩膀上真是好啊~~?
http://www.cnblogs.com/BearsTaR/archive/2010/05/12/web_performance.html
評論
0沒有任何評論