`
j2eetop
  • 浏览: 64372 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

《自己动手写框架》1:JS、CSS合并带来的效率提升

 
阅读更多
JS合并的必要性分析
一、效率因素
一般来说,在一个WEB工程中,需要使用大量的JS,这些JS可能来自许多提供者。
而在页面访问时,每次访问资源都要发起一个http请求,因此,即使文件已经缓冲,也需要发出一次http请求来确认文件是否被改变过。如果js个数比较少,那么没有什么问题,但是当JS文件数目比较多的时候,就会导致页面访问效率下降。如果能把所有的js都合并为一个文件,那么就可以节省几百毫秒,甚至几秒的时间,视网络状况而定。如果不需要做任何人为处理,就节省下来这些时间,无疑是相当有意义的。
二、JS引入顺序问题
如果说,效率问题还只是用户体验的问题,而JS引入顺序问题,就会导致你的页面是否可以执行的问题。我们知道,如果JS如果有依赖其它JS库,则被依赖的JS库就要放在依赖的JS库的前面,否则就会发生js错误。当引用的JS库比较小的时候,问题当然不大,但是做企业应用的时候,要用到的JS非常多,甚至在开发后期或维护期还会增加新的JS,这时稍有不慎,就会出现JS引入顺序问题。
为此,Tiny框架提供了解决方案,可以把工程中所有引用的JS资源都根据依赖关系,按顺序放在一个JS引用当中,它可以保证JS的引用顺序是正确的,同时由于所有的JS都只放入一个文件,因此,只会发出一次HTTP请求;第三提供了文件压缩传输功能,所以会保证网络传输量最小。
从下图中,可以看到,引入的js只有一个文件:uiengine.uijs,总共用时609ms


再次访问,可以看到,静态资源都已经是304,全部来自缓冲了,其中js用时58ms。



实际上这里面包含的JS文件有许多个,串行用时5434ms:



第二次访问的时间:js文件都已经是在本地缓冲了,串行用时395ms


两下做下对比:
合并为一个文件时,首次加载用时609ms,未合并为一个文件时,首次加载串行用时5434,节省时间:4825ms,时间比率为1:8.92,也就是说只有原来的11%的时间。

合并为一个文件时,缓冲后加载用时58ms,未合并为一个文件时,缓冲后加载串行用时395ms,节省时间:337ms,时间比率为15.7,也就是说只有原来的15%。
单纯从js加载方面来看,效率提升明显!
加上压缩过滤器,看看情况如何?


可以看到,原本5M的传输量已经变为936KB,访问时间为352ms,较压缩之前访问时间,少了237ms,时间是的58%,因此,访问时间有一定提升,尤其是网络带宽只有原来的18%,这个提升还是非常显著的。
不同的访问,数据会有一些差异,会有一些变化,但是总体来看差异还是显著的。缓冲后再访问,加载的串行时间比率为 1:合并文件个数,也就是说与合并的文件个数成正比。
新又增加了CSS合并,解决了图片资源引用的问题,有图有真相:


从图中看到,CSS都已经被合并到uiengine.uicss文件中了。
下面还有一个css没有合并,是由于这个是皮肤样式,要用来动态切换的,如果把它也合并了,就没有办法进行皮肤动态切换了。
分享到:
评论

相关推荐

    css js 合并工具

    "CSS JS 合并工具"就是这样的一个实用程序,它旨在帮助开发者将多个CSS和JavaScript文件整合到单个文件中,以此减少网页加载时的HTTP请求次数,从而提升页面的加载速度。 CSS和JavaScript文件的合并有以下几个主要...

    mvc js和css文件压缩合并

    在ASP.NET MVC4框架中,优化网页性能的一个关键步骤是对JavaScript (js) 和 Cascading Style Sheets (css) 文件进行压缩和合并。这有助于减少HTTP请求的数量,减小文件大小,从而提升网页的加载速度和用户体验。本文...

    compres实现js、css压缩合并

    总的来说,通过JS和CSS的压缩合并,我们可以显著提升网页的加载速度,减少服务器负载,并提高用户满意度。这一技术是现代Web开发不可或缺的一部分,尤其是在构建大型、复杂应用时,其优化效果尤为明显。在实际开发中...

    JS,CSS 以及浏览器

    6. **CSS预处理器**:如Sass、Less,能提升CSS编写效率和可维护性。 浏览器知识点: 1. **工作原理**:渲染引擎、网络模块、JavaScript引擎(V8)、存储机制(Cookie、localStorage、sessionStorage等)。 2. **...

    Html+Css+Javascript从入门到精通.pdf

    - **框架内使用JavaScript**:实现动态更新框架内容。 - **Cookies管理**:设置、读取和删除Cookies。 **第二十二章:建立日历控件** - **综合应用**:利用JavaScript制作一个功能完善的日历控件。 #### 第四部分...

    html+CSS+JS美食网站素材+源码

    在这个美食网站源码中,开发者可能还使用了外部JavaScript库和框架,如jQuery、Bootstrap或Vue.js,以简化开发过程并提高效率。同时,为了提升性能和减少HTTP请求,可能对CSS和JS进行了压缩和合并。 总的来说,这个...

    java控制css样式的读写

    - Sass、Less等CSS预处理器可以提升CSS的编写效率,Java项目中可以借助Node.js或其他工具在构建阶段将预处理器的代码转换为标准CSS,或者使用Java的Sass、Less编译库,如JSSass或LessJava,直接在Java环境中编译。...

    gulp4babel一个优雅的移动端css框架

    在实际项目中,我们还可以扩展这个框架,比如添加自动压缩CSS和JavaScript的`gulp-minify`任务,或者使用`gulp-rename`来改变输出文件的名称,甚至可以集成`browser-sync`实现浏览器实时刷新,提升开发效率。...

    动态网页设计与制作:CSS+JavaScript

    10. JavaScript库和框架:了解并使用如jQuery、React、Vue或Angular等JavaScript库和框架,可以简化开发过程,提高效率,同时利用社区的广泛支持和资源。 通过深入学习这些知识点,你可以构建出富有吸引力、功能...

    css框架 可以幫你很簡單的设计div+css的布局

    在实际应用中,掌握如何选择合适的CSS框架、理解和利用其特性,以及如何结合HTML和JavaScript进行交互设计,都是提升网页开发效率的关键技能。学习并熟练使用这些工具和方法,能帮助设计师和开发者快速构建出专业且...

    仿jquery 写自己的框架

    本文将基于"仿jquery 写自己的框架"这一主题,深入探讨如何模仿jQuery的核心特性来构建一个简易的JavaScript框架,旨在帮助新手理解jQuery的工作原理并提升编程技能。 首先,我们需要了解jQuery的基本概念。jQuery...

    CSS网站布局实录内含各色css布局样式

    1. CSS框架:Bootstrap、Foundation等框架提供了预设的样式和组件,加快开发速度。 2. CSS预处理器工具:如Gulp、Webpack等,自动化处理CSS,如编译预处理器语法、自动添加前缀等。 通过学习这个压缩包中的内容,你...

    web前端笔试面试总结+js+css

    【标题】: "web前端笔试面试总结+js+css" 【描述】: "这是一份针对web前端面试的总结,涵盖了js和css的相关知识,特别适合面试准备阶段的小白使用,内容全面" 【标签】: "css 前端 求职面试 范文/模板/素材 ...

    DIVCSS模板_css_

    - **CSS Sprites**:合并多个小图形成一张大图,减少HTTP请求,提升页面加载效率。 - **CSS预处理器**:如Sass、Less等,提供变量、嵌套规则等特性,提高编写效率并生成优化过的CSS代码。 6. **响应式框架** - ...

    react-skeleton-css:骨架“微” css框架样板

    合并为1个回购 react-skeleton-css是使用响应式CSS样板构建的React UI框架。 用法和文档 安装 react-skeleton-css作为 npm install react-skeleton-css 用法 您必须在项目中包括框架CSS /样式表。 <link href=...

    react-让使用您喜欢的CSS框架创建React组件变得更加容易

    另一方面,如果压缩包是关于styled-components的,那么我们谈论的是将CSS写在JavaScript对象中,这样可以更好地结合组件逻辑。styled-components允许我们创建所谓的"styled components",它们是React组件,同时也...

    xui js框架源码

    6. **build**:这部分通常包含了构建工具和构建过程产出的文件,比如编译后的JavaScript代码、压缩合并后的CSS和JS文件等。 7. **runtime**:运行时文件,可能包含XUI框架的核心逻辑,这些文件在网页加载时被解析...

    unigui_css引用路径

    - 使用CSS预处理器(如Sass、Less):提供变量、嵌套规则等功能,提升开发效率,编译后生成CSS。 - 利用CSS模块化(如CSS Modules):在Unigui中,可以实现组件化的样式管理,减少样式冲突。 6. **调试与测试** ...

    CSS插件-CSS插件 ieCSS插件 ie

    4. **CSS调试工具**:如Chrome的开发者工具、Firefox的Developer Edition,它们提供了查看和编辑CSS、元素选择器、性能分析等功能,与"IEDevToolBar"类似,都是为了提升开发者效率。 5. **CSS自动化**:Grunt、Gulp...

Global site tag (gtag.js) - Google Analytics