静态资源打包:一个javescript 的src引用多个文件,一个link引用多个CSS文件
疑惑描述:
查看了淘宝网的首页源文件,看到这样的一个特殊的
<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链接就只需要像服务器发送一次请求,如果是多个,则需要执行多次请求.所以这样减少了向服务器发送请求的次数,用户查看到完整页面的速度也快了很多,因为很多用户并不愿意在等待网站页面缓冲上花费太多时间.
你可以看看这个http://www.cnblogs.com/shoupifeng/archive/2010/01/12/1645431.html
淘宝还有很多类是的案例,比如淘宝商城一个很长的商品介绍页面,为了加快页面显示速度,只显示你浏览器大小的页面内容,下面你没看到的内容先不显示,当你将鼠标移到下面看其他商品图片的时候,它才像服务器发送请求来显示下面的页面内容
这个叫 图片延迟加载技术(ImageLazyLoad)
一个link引用几个css文件合适,大型网站的话肯定不止一个css文件·???
网站首先要进行CSS文件合并和压缩,如果合并压缩后还有多个的话可以使用这种方式进行合并请求,服务器端再对文件进行整合合并,至于引用几个CSS文件合适,这个没有具体的要求,但是合并压缩后的CSS文件不会太多吧!
延伸:http://www.cnblogs.com/shoupifeng/archive/2010/01/12/1645431.html
http://www.infoq.com/cn/articles/front-end-engineering-and-performance-optimization-part1
静态资源打包:一个javescript 的src引用多个文件,一个link引用多个CSS文件的更多相关文章
- 详解vue静态资源打包中的坑与解决方案
本文主要解决: 1.vue-cli默认配置打包后部署至特定路径下静态资源路径错误问题; 2.静态资源打包使用相对路径后css文件引入图片路径错误问题. 一.问题 vue-cli 脚手架生成的默认打包配 ...
- ASP.NET MVC 静态资源打包和压缩问题小记
ASP.NET MVC 中有个 BundleConfig 用于静态资源的打包和压缩,我在使用的过程中遇到一些问题,现在做下总结,并给出具体的解决方案. 问题一:打包压缩后的 JavaScript 和 ...
- 为什么angular library的build不能将assets静态资源打包进去(转)
Versions Angular CLI: 6.0.7 Node: 9.3.0 OS: darwin x64 Angular: 6.0.3 ... animations, common, compil ...
- Spring 加载静态资源
<mvc:default-servlet-handler/> JSP 中通过标签加载js文件或者link标签加载css文件等静态资源时要在springmvc的xml文件中配置以上设置请求就 ...
- vue打包静态资源后显示空白及static文件路径报错
1.打包之后打开dist的页面显示空白: 这个是打包项目比较常见的一个错误 改一下config下面的index.js中bulid模块导出的路径.因为打包后的index.html里边的内容都是通过scr ...
- springMVC下jsp引用外部js,css等静态资源的解决方法
直入主题. 1. web.xml对springMVC配置如下: <servlet> <description>Spring MVC配置</description> ...
- Springboot 系列(五)Spring Boot web 开发之静态资源和模版引擎
前言 Spring Boot 天生的适合 web 应用开发,它可以快速的嵌入 Tomcat, Jetty 或 Netty 用于包含一个 HTTP 服务器.且开发十分简单,只需要引入 web 开发所需的 ...
- ch1-使用路由-静态资源-404页面-ejs模板
1 package.json 项目文件夹根目录创建这个文件 //要依赖的模块 "dependencies": { //dependency 依赖的复数形式 "expres ...
- webpack4 学习 --- 处理静态资源
webpack 是利用loader 来处理各种资源的,wepback的配置基本上就是为各种资源文件,指定不同类型的loader. 1,处理css 最基本的css 处理loader 是css-loade ...
随机推荐
- GNU C内联汇编(AT&T语法)
转:http://www.linuxso.com/linuxbiancheng/40050.html 内联汇编提供了可以在C或C++代码中创建汇编语言代码,不必连接额外的库或程序.这种方法对最终程序在 ...
- TSQLTableJSON解析JSON
TSQLTableJSON解析JSON uses mormot rocedure TTestTableContent.SynopseTableVariant;var json: RawUTF8; pe ...
- [Android Pro] 获取手机已经安装的应用 和 获取当前正在运行的所有进程(一个uid对应多个pid)
1: 获取PackageManager 获取全部静态已安装的应用: PackageManager pm = getPackageManager(); List<PackageInfo> i ...
- [Guava] EventBus
1. 发布-订阅模式 发布-订阅模式(publish-subscribe)是一种编程范式,发布方不发布消息给特定的接收方,而是由订阅方选择性接收.这使得发布方和订阅方相对独立,减少了耦合性. 在发布 ...
- MySql Replication基本原理
Replication的思想是将数据在集群的多个节点同步.备份,以提高集群数据的可用性(HA):Mysql使用Replication架构来实现上述目的,同时可以提升了集群整体的并发能力.5.6版本作为 ...
- shadow 优化
http://gamedevs.org/uploads/rendering-in-battlefield3.pdf mark 当初看过 ======= sm有两阶段 1生成sm 2采样 第一阶段的优化 ...
- C# format 日期 各种 符号 实例分析如何精确C#日期格式到毫秒
摘 自: http://developer.51cto.com/art/200908/141145.htm 实例分析如何精确C#日期格式到毫秒 2009-08-03 10:48 paulfzm jav ...
- Apache2.4 与 php7.1.6的链接
首先Apache已经安装成功,在浏览器中能够打开再下载php 我的Apache安装版本为Apache2.4.26 x64 vc14 所以我php也应该是vc14编译的 php下载地址为 http:// ...
- Spring Security实现后台管理员登录(一)
一.实现功能 二.数据表设计 为了测试方便,这里创建一个简单的数据表,只含有name和password两个字段.至于角色,权限等,这里都先不考虑. 插入一条数据,name为admin,password ...
- app store 注册账号生成证书上传app完整的教程
app store为开发者提供四种类型的申请: 个人ios开发者计划$99/年 公司ios开发者计划$99/年 企业ios开发者计划$299/年 高校ios开发者计划免费 在这里主要介绍一下公司ios ...