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