Advertisement
Advertisement

新足迹

 找回密码
 注册
新足迹 门户 IT专业论坛 查看内容

探讨High Performance Website,从刷新说起吧,

2011-1-22 21:50| 发布者: | 查看: 1191| 原文链接

最近在读两本关于网站运行速度的书--(页面方面,非数据库端),觉得眼界又开阔 了一点。
当用户端请求一个页面的时候(比如oursteps.com.au/bbs),用户机器发送请求到服务器,服务器返回页面,用户和服务器似乎就那么一个来回,想起来很简单。其实,如果是首次访问,真正的请求是100个左右,也就是说,用户的机器向服务器发送了大约100个请求,服务器端处理每一个 请求并返回结果,最后用户的浏览器显示一个页面。

说说刷帖吧。很多人(包括我)在跟踪一个感兴趣的贴时候可能会使用浏览器的刷新功能,以这个贴http://www.oursteps.com.au/bbs/viewthread.php?tid=308872&extra=page%3D1为例,如果只是点进这个帖,用户端向服务器发送大约5个请求,服务器解析处理每个请求并发回数据,如果刷新这个帖,猜猜多少个请求会发送到服务器???????????????50个请求。每当一个用户按一下刷新,就有50个左右的请求送到服务器,服务器处理每个请求并发回结果。


提升网站速度的第一Gold Rule是减少请求数量,涉及到很多方面。
还是以刷帖为例吧,其实用户需要的是得到一个帖子的最新跟帖,现在的情况是,就算没有最新的跟帖,用户机器也会向服务器发送50个请求,服务期解析这50个请求,并将帖子内容从新发给客户端,客户端再从新组织显示页面内容。

真正理想的做法应该是客户端发送一个请求(比如Ajax),服务器解析后发回最新跟贴,或者发回空的数据,如果没有更新的话,而不是发回整个帖子。或者更进一步,客户端发送一个“请帮我自动更新本贴一旦有新的跟帖” ,

一次刷帖为什么会产生50个服务器请求呢?以这9个图片为例(附图),几乎每个帖子会出现,当我们刷帖时,我们的机器就会发送九个请求给服务器,服务器解析后很可能发回一个个304说本图片没有更新过-- 请使用客户机中现有图片。如果想要减少请求数量,可以把这个9个图片合成一个,再用 CSS Sprite来控制使用,这样刷帖的时候请求数量就从9减少到1了。 当然理想的做法是一个图片请求都不要发送,因为毫无意义,只是徒增服务期负担,

(备注:以上数据和用户端的浏览器设置有关,)

[ 本帖最后由 典 于 2011-1-22 21:51 编辑 ]
Advertisement
Advertisement


Advertisement
Advertisement
返回顶部