博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
静态资源打包:一个javescript 的src引用多个文件,一个link引用多个CSS文件
阅读量:7127 次
发布时间:2019-06-28

本文共 2162 字,大约阅读时间需要 7 分钟。

疑惑描述:

查看了淘宝网的首页源文件,看到这样的一个特殊的

<script src="http://a.tbcdn.cn/??s/kissy/1.1.6/kissy-min.js,p/global/1.0/global-min.js,p/et/et.js?t=2011092320110301.js"></script>

里面用逗号分隔了几个js文件kissy-min.js,p/global/1.0/global-min.js,p/et/et.js

这个是什么道理?同样的还有CSS 

<link href="http://a.tbcdn.cn/p/fp/2011a/??html5-reset-min.css,global-min.css,header/header-min.css,product-list/product-list-min.css,attraction/attraction-min.css,expressway/expressway-min.css,category/category-min.css,category/sub-promotion-min.css,guide/guide-min.css,hotsale/hotsale-min.css,bottom-gg/bottom-gg-min.css,subfooter/subfooter-min.css,local-life/local-life-min.css,footer/footer-min.css?t=20111213.css" rel="stylesheet">

又如虾米中的(http://res.xiami.net/??static/js/lib/jquery.tmpl.min.js,static/js/app/relation.js,static/js/app/nameCard.js?ver=20140116-175037)

 

解答:

这个叫静态资源打包,因为浏览器下载静态文件的时候是有线程数限制的,所以下载1个100K的js/css,会比10个10k的js/css快的多,为了提高性能,服务器端会把js/css合并成一个文件(因为都是文本嘛)再向客户端输出。比如,一个请求的地址是:http://www.abc.com/static/pack?js=a,b,c,d,e,那么服务器端你在这个请求的接口里,根据js参数的值,把a.js到e.js的内容读取出来,再合并成一个文件(一般同时还会压缩,比如去空格,比如缩短变量名等),输出到客户端。如果服务器端再加上缓存,那可能连合并都不需要了。这样页面加载速度会快非常多。比较常用的js打包工具有google的google closure,css用yui compressor。基本思想就是这样,具体的你可以搜一下。

 

 

http://a.tbcdn.cn/??s/kissy/1.1.6/kissy-min.js,p/global/1.0/global-min.js,p/et/et.js?t=2011092320110301.js 虽然你看着像三个js文件用逗号分隔,其实对javascript来说是一个文件名,你可以复制放在浏览器地址栏里访问的。可能实际确实是三个js文件 的,但是通过http://a.tbcdn.cn这个服务器程序资源打包以后,做为一个response了,这样减少请求服务器端的次数提高性能。

 

href中的内容:http://st.******.com/??css/basic/core_mod.css,res/css/default/main15.css,res/css/default/beta15.css,res/player/img/web_player.css?v10182012,其实真实的指向地址是:http://st.******.com/,?后面的内容是查询字符串,服务器端会解析这个查询字符串中包含的多个文件,并且合并到一个文件中,最终的目的是减少浏览器发出请求的次数,达到优化页面打开时间的效果。

 

许多高浏览量的大型网站 为了方便加快网站的显示速度,减少页面的缓冲,将多个js/css文件合并成一个,这样当用户打开网站的时候,一个js/css链接就只需要像服务器发送一次请求,如果是多个,则需要执行多次请求.所以这样减少了向服务器发送请求的次数,用户查看到完整页面的速度也快了很多,因为很多用户并不愿意在等待网站页面缓冲上花费太多时间.

你可以看看这个

淘宝还有很多类是的案例,比如淘宝商城一个很长的商品介绍页面,为了加快页面显示速度,只显示你浏览器大小的页面内容,下面你没看到的内容先不显示,当你将鼠标移到下面看其他商品图片的时候,它才像服务器发送请求来显示下面的页面内容

这个叫 图片延迟加载技术(ImageLazyLoad)

 

一个link引用几个css文件合适,大型网站的话肯定不止一个css文件·???

网站首先要进行CSS文件合并和压缩,如果合并压缩后还有多个的话可以使用这种方式进行合并请求,服务器端再对文件进行整合合并,至于引用几个CSS文件合适,这个没有具体的要求,但是合并压缩后的CSS文件不会太多吧!

 

延伸:

 

转载地址:http://wihel.baihongyu.com/

你可能感兴趣的文章
Office Communication Server(OCS) 2007的部署
查看>>
WPF中打印问题的探讨
查看>>
QOS中DSCP/COS/IP的映射关系
查看>>
在VMWare Workstation 9 实现嵌套虚拟化设置【虚拟机再虚拟化】
查看>>
VR+旅遊(或酒店)
查看>>
大网高级技术笔记(二)
查看>>
Zabbix 4.0.0 新功能介绍
查看>>
简单的Shell脚本
查看>>
简单shell脚本监控网站页面
查看>>
zookeeper 安装使用教程
查看>>
asp.net core系列
查看>>
redis备份实操
查看>>
浅谈Oracle SQL trace
查看>>
MySQL基础备忘(1)
查看>>
技术公开课:SQL Server 高可用性解决方案概述(下)
查看>>
Skype for Business Server 2015-04-前端服务器-5-创建DNS记录
查看>>
Lync Server外部访问系列PART4:部署反向代理
查看>>
DPM2012系列之六:在Win7上安装DPM远程管理控制台
查看>>
PowerShell 学习笔记——运行命令
查看>>
联想K系引领智能电视潮流,Android 4.0将成行业标配
查看>>