龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > asp.net编程 >

经验分享:利用VCombo快速减少网站RoundTrip

时间:2009-12-21 11:47来源:未知 作者:admin 点击:
分享到:
当网站的体积越来越庞大的现在,网站所依赖的文件,诸如CSS、JS脚本等的数量与日俱增。虽然我们自豪地说我们的浏览器可以跑几个WPF都不卡,我们仍然不能忽视网络迟滞所带来的若

当网站的体积越来越庞大的现在,网站所依赖的文件,诸如CSS、JS脚本等的数量与日俱增。虽然我们自豪地说我们的浏览器可以跑几个WPF都不卡,我们仍然不能忽视网络迟滞所带来的若干影响,这里就包括RoundTrip的影响。就像有些浏览器同一时间对同一域名/IP地址解析只允许有一个请求。如果我们的请求都来自同一个域,而我们的文件数量又非常多的话,我们所耗费的时间自然也就无故增加了,当然这是没有必要的。RoundTrip的影响还包括每次连接本身所需要的非数据流量,这些对一些流量敏感的用户而言就成为了一些潜在的问题,激烈竞争的现在,能替用户多想就能跑得更快更远。

用来减少RoundTrip的技巧有很多,当然,万变不离其宗,它的起因就是因为一次一次又一次地从客户端向服务器发送请求,减少它的请求,就是减少RoundTrip的数量。所以技巧中的很多内容就是告诉你,去掉不必要的,合并那些应该在一起的,尽可能多地把你的一些资源文件分散到多台服务器(避免同一时刻浏览器对同一域的请求有限制)。例如有很多小图片,则可以用CSS加合并图片的方式来减少RoundTrip,可以参考这里。

说了半天,就要引入我们今天的主角了,它的作用和雅虎Combohandler一致。我写VCombo也就是看到了雅虎Combo的这篇文章。我的代码仅供参考,您可以自行实现更符合您需求的代码。

twitter.com/volnet
图1. VCombo原理图

VCombo的功能很简单:
假设原来我们打算添加以下两个CSS文件:

<link href="~/Styles/Site.css" rel="stylesheet" type="text/css" />
<link href="http://files.cnblogs.com/volnet/gocool.css" rel="stylesheet" type="text/css" />

现在我们可以改写成:

<link href="<%=VCombo.ComboHelper.EncodeComboUrl("ComboHandler.ashx", "http://files.cnblogs.com/volnet/gocool.css&/Styles/Site.css")%>" rel="stylesheet" type="text/css" />

最后我们将得到如下代码:

<link href="ComboHandler.ashx?http%3a%2f%2ffiles.cnblogs.com%2fvolnet%2fgocool.css%26%2fStyles%2fSite.css" rel="stylesheet" type="text/css" />


精彩图集

赞助商链接