js资源加载优化
2015-03-14 20:01
288 查看
互联网应用或者访问量大的应用,对js的加载优化是不可少的。下面记录几种优化方法
[b]CDN + 浏览器缓存[/b]
CDN(content delivery network)内容分发网络, 最传统的优化方式。其实就是将自己页面所依赖的js(静态的)放置到CDN上,或者使用一些CDN库,以此降低对应用服务器的请求,而浏览器缓存也是不重复加载js文件的性质。
优点:
1.简单、容易维护
2.304 cache
简单来说就是转掉请求,缓存不重加载。
缺点:
1.缓存会失效,当用户强制刷新时会有请求
2.无法增量更新
[b]离线存储(HTML5 AppCache)[/b]
通过配置一个manifest文件实现离线缓存
manifest文件包含:
1.当前版本号
2.cache的文件
3.需要网络请求的文件
4.失败响应
优点:
1.真有版本更新才会有请求(CDN方式还是会有请求的,只不过是304请求)
缺点:
1.更新完版本后,必须刷新一次页面才会启用新版本文件。
PS:所以必须监听一个事件,重刷页面
[b]CDN + 浏览器缓存[/b]
CDN(content delivery network)内容分发网络, 最传统的优化方式。其实就是将自己页面所依赖的js(静态的)放置到CDN上,或者使用一些CDN库,以此降低对应用服务器的请求,而浏览器缓存也是不重复加载js文件的性质。
优点:
1.简单、容易维护
2.304 cache
简单来说就是转掉请求,缓存不重加载。
缺点:
1.缓存会失效,当用户强制刷新时会有请求
2.无法增量更新
[b]离线存储(HTML5 AppCache)[/b]
通过配置一个manifest文件实现离线缓存
manifest文件包含:
1.当前版本号
2.cache的文件
3.需要网络请求的文件
4.失败响应
优点:
1.真有版本更新才会有请求(CDN方式还是会有请求的,只不过是304请求)
缺点:
1.更新完版本后,必须刷新一次页面才会启用新版本文件。
PS:所以必须监听一个事件,重刷页面
window.applicationCache.addEventListener('updateready', function (e) { console.warn('页面更新中'); window.applicationCache.update(); window.applicationCache.swapCache(); setTimeout(function () { location.reload(); }, 10); }, false); //from http://dd.m.taobao.com/[/code]
2.进入离线存储的页面,如果不更新版本,是会将其当初静态页面不请求,这样就无法进行灰度发布等策略。
PS:灰度发布:简单来说就是一部分人使用旧版,一部分人使用新版。
3.无法增量更新
PS:例如一个100KB的文件,你只修改了其中4KB的东西,但你不得不更新整个100KB文件。
4.当需要更新某个文件时,会连带其他文件也跟着更新
[b]本地存储[/b]
应用页面通过对用户当前版本与服务端版本的比较(本地存储有版本信息),通过跨域ajax请求有更新的js文件,如果是增量更新,则通过算法计算出新版本的js代码,然后将代码eval一下并将新js字符串存储到本地存储中(localStorage),以供下次增量更新。
优点:
1.减少不必要的请求
2.避免离线存储的问题
3.增量更新(需要算法计算)
PS:1.chunk算法,四个字符为一个块,比对块。
2.编辑距离计算算法
缺点:
1.实现起来比前面几种方法复杂
2.某些浏览器不支持
相关文章推荐
- 前端优化之js资源加载策略
- 用CSS/JS技巧优化HTML页面加载速度
- 关于资源动态加载的一次有趣优化[原创]
- web优化之-mvc js动态合并 动态压缩 去掉js重复引用 js缓存 js延迟加载
- web优化之-js 异步加载 js延迟执行 js插件
- web优化之-js 异步加载 js延迟执行 js插件
- 持续讨论 javascript 如何控制优化页面 js 加载顺序
- JS 和 CSS 的位置对其他资源加载顺序的影响
- yepnope.js 异步加载资源文件
- js性能优化 如何更快速加载你的JavaScript页面
- web页面优化之动态加载js和文件
- 网站性能优化-如何加载JS,JS应该放在什么位置?
- 如何优化网页加载速度(前端优化) -外部JS 的阻塞下载
- yepnope.js 异步加载资源文件
- 性能优化:如何更快速加载你的JS页面
- javascript 控制优化页面 js 加载顺序
- Android ListView 性能优化-----(异步加载图片资源)
- 网页重构之资源加载和优化
- 凡客真正的图片延迟加载 优化jquery.lazyload.js
- 系统架构 优化js的 优化web页面加载速度