如果有心的访客在访问淘宝,新浪围脖的网站时就会注意到其大量静态文件(诸如css,js,图片等)都是通过非主站的域调入的,这样做有什么好处呢?,下面我们就来分析下他们为什么这么做。
1.便于cdn、web业务独立。
大家都知道,cdn起到加速作用的前提是线路优于源站(对动态网页加速)或者要hit命中请求(对静态内容加速)。而大型网站有的在使用蓝汛chinacache、网宿chinanetcenter,而更多的的是自己在机房投入建设cdn,将其作为自己的一项业务。
大公司里面,不同产品间不同部门都是权限分级的,所以,域名分开更便于业务的管理、维护,也许你会问,用子域名不是照样可以分级么?别急,往下看。。。
2.更利于cdn的hit命中。
为了降低web压力,cdn系统会遵循cache control和expires http头标准对改请求返回的内容进行缓存,便于后面的请求不在回源,起到加速功能。而传统cdn(web与cdn合体)的方式,需要对不同类型的文件设置相应的cache规则或者遵循后端的http头,但这样难以发挥cdn的最大优势,因为动态请求回源的概率非常之大,如果访客与源站的线路并不慢,通过cdn的请求未必快于直接请求源站的。 大型网站为了提升web性能到极致,通常缓存头设置比较大,像谷哥js设置一年缓存,百度首页logo设置十年缓存,如果将静态元素抽取出来,就可以很方便的对所有静态元素部署规则,而不用考虑动态请求。减少规则的条数可以提升cdn的效率。
3.让请求不带庞大的cookie。
很多朋友都知道,一般情况下,对css,js,图片等静态元素请求cookie是没有意义的,反而会浪费访客带宽和服务器入带宽。但根据http协议,同域下的同时候请求,COOKIE参数是一样的,就好比签名站某站内图:
以淘宝img01.taobaocdn.com为例给大家看下淘宝域节省COOKIE流量的效果:
大家可以看到访问请求时,没有任何cookie请求参数。
再来看看签名站使用阿里云OSS储存图片(未做cname映射)的效果:
再来讨论下为什么CDN不建议使用主站的子域名?
这是因为COOKIE的域归属特性所决定的。比如你请求了
www.xiazijiang.com,服务器返回要求写cookie…. domain=www.xiazijiang.com,这样就可以将COOKIE保存到
www.xiazijiang.com的域下。也可以domain=xiazijiang.com,将COOKIE保存到根域。两种做法造成效果上的区别是后面的请求,前者是所有
www.xiazijiang.com下(包含www的子域名,如a.
www.xiazijiang.com)的请求都会带上COOKIE,而后者是所有xiazijiang.com(包含其子域名,如
www.xiazijiang.com, a.xiazijiang.com)都会带COOKIE,而现在很多应用都是跨域的,比如主站是CMS,与BBS论坛整合,可能导致COOKIE跨域名调用。而有些CMS内部程序构架时也会强制写根域的COOKIE,所以,不建议在CDN业务上使用主站的子域名。
最后讨论下为什么连COOKIE这点小流量都要省?
WEB优化是无孔不入的,哪里可以省就要省哪里,本身这些COOKIE参数就是无用的,别小看这几百B到KB的COOKIE,在淘宝等等大型网站大流量时,可以省去不少网络占用的。而正是基于这些细节上的优化,让淘宝自建CDN在双11等猛量请求中斩获新绩,其成就已经远超越国内商业CDN产品。
如果贵站流量上已经大到有点力不从心了,在选择CDN/OSS的同时,建议参考一下文章,合理斟酌。
双11拼团 86元/年 https://www.aliyun.com/1111/2019/group-buying-share?ptCode=A6B4731A083773AB523C557CDFD33D4A647C88CF896EF535&userCode=uyae4s5d&share_source=copy_link
-------------------------
-------------------------
-------------------------
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。