1. 维护一个全局版本 一般webpack直接生成 obj = { a.js :'a.xx5.js' }
2. 创建一个active.js 去激活js
3. 例如请求 a.js
4. active("a.js")
5. localStorage["a.js"] -> script src="a.js" 没有存过 ajax =>datatype:'text'
script src="a.js" localStorage["a.js"] = "a.xx5.js"
-> localStorage["a.xx5.js"] = "js内容"
-> script src="a.js"== obj["a.js"] 有存过
-> eval(localStorage["a.xx5.js"])
-> 请求并从新缓存
6. 总共5M 超过 2.5M出现卡顿
复制代码
last-modified / if-modified-since
这是一一组请求/相应头
-> 响应头:
last-modified: Wed, 16 May 2018 02:57:16 GMT
-> 请求头:
if-modified-since: Wed, 16 May 2018 05:55:38 GMT
服务器器端返回资源时,若是头部带上了了 last-modified, 那么
资源下次请求时就会把值加入入到请求头 if-modified-since 中,
服务器能够对比这个值,肯定资源是否发生变化,若是没有发生变化,则返回304
etag / if-none-match
这也是一一组请求/相应头
-> 响应头:
etag: "D5FC8B85A045FF720547BC36FC872550"
-> 请求头:
if-none-match:"D5FC8B85A045FF720547BC36FC872550"
原理理相似,服务器器端返回资源时,若是头部带上了了 etag,
那么资源下次请求时就会把值加入入到请求头 if-none-match 中,
服务器器能够对比这个值,肯定资源是否发生变化,若是没有发生变化,则返回 304
expires
-> expires: Thu, 16 May 2019 03:05:59 GMT
在 http 头中设置一个过时时间,在这个过时时间以前,浏览器的请求都不会发出,
而是自动从缓存中读取文件,除非缓存被清空,或者强制刷新。缺陷在于,服务器时间和
用户端时间可能存在不一致,因此HTTP1.1加入了cache-control头来改进这个问题
cache-control
设置过时的时间长度(秒),在这个时间范围内,浏览器请求都会直接读取缓存。当expires和
cache-control都存在时,cache-control的优先级更高
复制代码
浏览器器请求//xx.cn/a.js
-->解析域名
—>HTTP链接
—>服务器器处理文件
—>返回数据
->浏览器器解析、渲染文文件。
Keep-Alive解决的核心心问题就在此,必定时间内,同一域名屡次请求数据,
只创建一次HTTP请求,其余请可复用每一次创建的链接通道,以达到提升请求效率的问题。
必定时间是能够配置的,HTTP1.1仍是存在效率问题
第一个:串串行行行的文文件传输。
第二个:链接数过多。HTTP/2对同一域名下全部请求都是基于流,也就是说同一域名无论访问多少文件,也只创建一路链接。
一样Apache的最大大链接数为300,由于有了这个新特性,最大的并发就能够提高到300,比原来提高了6倍!
复制代码
- Rendering
- Paint flashing 重绘
- FPS meter 一秒绘制多少帧
- Performance
- loading 加载时间
- scripting 脚本执行时间
- rendering 重排时间
- painting 重绘时间
- system 系统执行时间
- idle 空闲时间
- event log
复制代码
总结 渲染阶段 : Layout -> Paint -> Composite Layerscss
根元素、position、transfrom、半透明、滤镜、canvas、video、overflowhtml
何时gpu直接参与?: css3d,video,webglk,transform,滤镜 硬件加速前端
重排必定会引发重绘 重绘不必定引发重排node
未完待续......webpack