我在同一台服务器上搭建了两个服务,一个使用了cdn,一个未使用cdn。每次打开前都清理缓存,排除其他因素进行对照。

贴对照之前,先简单进行以下理论速度计算,我的测试服务器是1m的带宽,所以各位手下留情,不要攻击,也不要拿我的小水管做压力测试,穷人伤不起。

1m带宽的服务器理论上行速度是128K,unigui初始化的时候,需要加载extjs的css,js。需要加载uni的css,js。还需要加载主题theme的css,js。总大小大约是800k上下,很多人觉得才800k这么点,往U盘里考都看不到进度条。但是放在服务器里就慢如蜗牛了,毕竟带带宽只有128K,加载这些资源需要7-8秒的时间。不要忘记,再这个客户端初始化的时候,带宽是被占满了,其他用户再打开浏览器,就要等该用户加载完才能正常再加载。这800k只是初始化部分css,js的包大小,并非全部的资源文件,其他的还有图标,图片等。。。所以很多人感觉unigui打开慢就是这个原因。如果想要有一个较好的体验,就要提高带宽,5m带宽的上行速度是640k,加载速度能到2秒内。

废话不多说,上图。下图是不使用CDN的初始化加载

UNIGUI与CDN(二)UNIGUI使用CDN后的速度分析

可以看到有30个请求,加载了3m的文件,加载加解析共使用了8.18秒(最下面),其中ext-all.js大小是667k,单这一个文件就使用了7.4秒。

再看一下使用了CDN后的效果

UNIGUI与CDN(二)UNIGUI使用CDN后的速度分析

同样的页面,只用了1.1秒,速度提升8倍,同样看最大的ext-all.js文件817k,使用320毫秒。(此处有可能有人问,为什么同样的ext-all.js文件,为什么大小不同,因为压缩率不同,各位打开安装目录查看原始文件,FMSoft\Framework\uniGUI\ext-6.7.0\build\ext-all.js,可以看到原始文件是2.25m,在加载的时候服务器对文件进行了压缩,unigui中是unigui进行的压缩,cdn是由cdn服务器进行的压缩)。

看完加载速度,再看带宽使用情况。

鼠标放到每一条上,能看到不使用cdn的时候,所有请求都是从服务器加载,也就是说这8秒,时间服务器就只能给当前一个用户使用。使用cdn后,再查看发现只有第一条是在服务器加载的,其他的资源都是从cdn服务器加载的,不消耗服务器带宽。也就说新用户打开的时候服务器只开销了2.8k的带宽。

那么我们来算一下,未使用cdn的情况下,8秒才能服务完一个用户,而使用cdn后,按照128k的带宽算,可以同时为45个客户端提供服务。初始化的时候,带宽能节省99%,算上8秒的时间,使用cdn后并发是未使用的时候的360倍(仅按带宽算)。

综上所述,最终的效果就是用户打开的时候,速度加快,体验变好,服务器性能提升。1m的小水管服务器,也能干大事。

有图也不一定有真相,各位可以测试一下我搭建的两个服务器,实际对照一下,对照之前记得先清理缓存。

未使用cdn地址:http://demo.hanxuebaobao.com:7001/

使用cdn的地址:http://demo.hanxuebaobao.com:7002/


谁还不是宝宝了