新到貨2本75折
前端性能揭秘

前端性能揭秘

  • 定價:600
  • 運送方式:
  • 臺灣與離島
  • 海外
  • 可配送點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
  • 可取貨點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
載入中...
  • 分享
 

內容簡介

本書主要介紹用於指導前端性能優化工作的通用優化方法,從網路、流覽器、構建工具、跨端技術和CDN 等方面介紹不同技術、系統對性能的影響,同時説明讀者瞭解如何有效優化性能。本書從性能的度量、分析和實驗這三個方面開始介紹。
 
先介紹性能優化的一些通用方法,然後將性能作為一個切面説明讀者瞭解與前端技術棧和性能有關的知識。從這個切面觀察,這些系統的工作原理等知識被賦予了另外一層意義,通過這種聯繫把工作原理真正運用到工作中,在性能優化方面發揮重要作用。
 
本書面向的讀者為具有一定經驗的Web開發工程師,以及對前端開發或 Web 開發有一定瞭解的開發人員。同時,假定讀者能夠進行簡單的網頁開發,並且具備相關的基礎知識。

 

作者介紹

佘錦鑫,花名當軒。畢業于江南大學理學院,阿里前端技術專家,曾負責Alibaba.com海外版性能優化,講師、開源愛好者。現就職于網易雲音樂,對Web性能、跨端、視覺化搭建等領域有較深入的理解。

 

目錄

第 1 篇 從 Vite 起步
第 1 章 從實踐開始 ··························.2
1.1 Hello World ···························.2
現在開始 ··························.2
使用 DevTools ····················.4
個優化 ·······················.6
1.2 現實開發的例子 ······················.7
設置開發環境 ·····················.7
Vite ································.8
vite build ··························.9
進一步優化 ·····················.11
引入 antd ························.11
按需引入 ························.13
動態 import ·····················.14
1.3 小結 ································.15

第 2 篇 性能優化方法論
第 2 章 度量 ································.18
2.1 科學的方法 ·························.19
從一個客戶回饋說起 ··········.19
不度量性能,就無法優化
性能 ······························.19
真實的使用者端性能 ·············.20
2.2 初識 Performance API ··············.21
performance.now()方法 ·········.21
構建 屏指標 ···················.23
2.3 均值、分位數和秒開率 ············.23
均值 ·····························.24
分位數 ···························.25
秒開率 ···························.26
如何選擇合適的統計指標 ·····.26
2.4 度量 屏 ···························.27
FP ································.27
FCP ······························.27
FMP ·····························.28
如何度量 FMP ··················.28
選定並度量 屏 ················.30
2.5 度量流暢度 ·························.30
度量流暢度的指標 ·············.31
視覺化工具 ·····················.31
用戶端度量 ·····················.32
2.6 Core Web Vitals ····················.34
LCP ······························.34
FID ·······························.38
CLS ······························.39
2.6 小結 ·································.41
第 3 章 分析 ································.42
3.1 分析方法 ···························.43
確定目標 ························.43
收集資料 ························.43
清洗數據 ························.44
統計值分析 ·····················.44
時序分析 ························.45
維度分析 ························.46
相關性分析 ·····················.48
3.2 常用的過程指標 ····················.48
TTFB ····························.49
DOMReady 和 Load ············.50
3.3 Performance API 詳解 ··············.51
Navigation Timing API ·········.51
Peformance Entry API ··········.53
Resource Timing ················.54
Navigation Timing Level 2 ·····.55
Paint Timing ····················.56
User Timing ·····················.56
3.4 分階段性能分析 ···················.58
常用的指標 ·····················.58
其他值得分析的指標 ··········.59
3.5 小結 ································.59
第 4 章 實驗 ································.60
4.1 優化不是照搬軍規 ·················.61
時代在發展 ·····················.61
優化的木桶效應明顯 ··········.62
用戶環境差異大 ················.62
性能實驗 ························.62
4.2 用實驗驗證優化 ···················.63
混沌問題 ························.64
設計實驗 ························.64
分桶 ·····························.65
上報和分析資料 ················.68
A/B Test 背後的數學 ···········.68
結論不重要,重要的是方法 ··.69
4.3 用實驗改進優化 ···················.69
建立模型 ························.69
實驗修正 ························.70
4.4 小結 ································.71
第 5 章 工具 ································.72
5.1 DevTools ···························.73
Network 面板 ···················.73
Performance 面板 ···············.76
5.2 WebPageTest ·······················.81
發起測試 ························.82
報告 ······························.83
Waterfall 視圖 ··················.83
5.3 小結 ································.87

第 3 篇 網路通訊協定與性能
第 6 章 TTFB 為什麼這麼長 ··············.90
6.1 TTFB 的合理值 ····················.91
精確定義 ························.92
RTT ······························.92
RTT 一般需要多久 ·············.93
TTFB 的構成····················.93
實驗環境驗證 ···················.94
6.2 如何優化 TTFB ····················.95
減少請求的傳輸量 ·············.96
減少伺服器端的處理時間 ·····.96
減少 RTT ························.98
TTFB 的值越小越好嗎 ·········.98
6.3 小結 ·································.99
第 7 章 建立連接為什麼這麼慢 ·········.100
7.1 建立連接應該耗時多久 ···········.101
TCP 協議 ·······················.101
建立連接需要多少個 RTT ····.101
抓包驗證 ·······················.102
7.2 如何優化建立連接的耗時 ········.103
減少物理距離 ··················.103
preconnect ······················.103
複用連接 ·······················.103
功能變數名稱收攏 ·······················.104
TCP Fast Open ·················.104
QUIC 和 HTTP/3 ··············.104
7.3 小結 ·······························.105
第 8 章 Fetch 之前流覽器在幹什麼 ····.106
8.1 重定向 ·····························.107
HTML 重定向 ·················.109
有哪些重定向 ·················.109
8.2 流覽器打開耗時 ··················.112
初始化標籤頁的時間 ·········.112
unload 的耗時 ··················.112
8.3 如何優化 beforeFetch 耗時 ·······.114
重定向邏輯前置 ···············.115
合併重定向 ····················.115
避免使用短鏈 ·················.116
使用 beforeFetch 度量和
分析 ····························.116
8.4 小結 ·······························.117
第 9 章 HTTPS 協定比 HTTP 協定
更慢嗎 ····························.118
9.1 HTTPS 協議為什麼安全 ··········.119
對稱加密和非對稱加密 ·······.119
SSL/TLS 的實現 ···············.120
SSL/TLS 握手 ·················.122
TLS False Start ·················.124
TLS 1.3 ·························.124
9.2 HTTPS 協議如何吊銷證書 ········.125
CRL ·····························.125
OCSP ···························.126
OCSP Stapling ·················.126
流覽器支援的情況 ············.126
證書類型 ·······················.127
證書驗證機制對性能的影響 ···.129
9.3 HTTPS 協議更慢嗎 ···············.129
確保證書鏈完整 ···············.129
啟用 TLS 1.3 ···················.129
不濫用 EV 證書 ···············.130
開啟 OSCP Stapling ···········.130
9.4 小結 ································.130
第 10 章 HTTP/2、HTTP/3 和性能 ·····.131
10.1 HTTP/2 和性能 ···················.131
連接複用為什麼不生效 ······.131
頭部壓縮對我們有什麼影響 ··.137
為什麼沒有廣泛使用 Server
Push ···························.140
10.2 為什麼還需要 HTTP/3 ···········.144
HTTP/2 存在什麼問題 ·······.145
HTTP/3 如何解決問題 ·······.146
10.3 小結 ······························.148
第 11 章 壓縮和緩存 ·····················.150
11.1 傳送速率和壓縮速度如何兼得 ···.151
Content-Encoding ·············.151
gzip 壓縮和 br 壓縮 ··········.152
即時壓縮 ······················.152
離線壓縮 ······················.153
如何優化傳輸性能 ···········.154
11.2 HTTP 緩存什麼時候會失效 ·····.154
緩存不僅僅是流覽器的
事情 ···························.154
緩存 Header ···················.154
11.3 小結 ······························.157

第 4 篇 流覽器與性能
第 12 章 流覽器和性能 ···················.160
12.1 次渲染時都發生了什麼 ····.161
小的渲染路徑 ··············.162
儘快返回 HTML ··············.167
減少資源的阻塞 ··············.167
12.2 為什麼 DOM 操作很慢 ··········.168
幀 ··································.168
重排 ·······························.169
重繪 ·······························.170
訪問 DOM 屬性 ················.170
如何優化 DOM 操作 ··········.171
12.3 小結 ······························.172
第 13 章 非同步任務和性能 ················.173
13.1 事件迴圈機制 ····················.174
為什麼要有事件迴圈 ········.174
多執行緒阻塞模型 ··············.174
事件迴圈 ······················.175
13.2 宏任務和微任務 ·················.176
13.3 Promise 的 polyfill 性能 ··········.178
如何正確實現 Promise ·······.178
13.4 requestAnimationFrame ··········.180
13.5 小結 ······························.181
第 14 章 記憶體為什麼會影響性能 ········.182
14.1 記憶體 ······························.182
記憶體管理 ·························.183
14.2 記憶體洩漏 ·························.188
記憶體洩漏和性能 ··············.188
常見的導致記憶體洩漏的原因 ··.188
記憶體洩漏問題的診斷工具 ···.189
14.3 小結 ······························.191
第 15 章 使用 ServiceWorker 改善
性能 ······························.193
15.1 ServiceWorker 概述 ··············.194
AppCache······················.194
ServiceWorker·················.195
ServiceWorker 能做什麼 ·····.195
15.2 使用 ServiceWorker 進行緩存 ···.196
Cache API ·····················.196
IndexDB ·······················.201
控制緩存的 Cache Key ······.201
更加靈活的緩存更新策略 ···.203
15.3 API 提前載入 ····················.204
15.4 ServiceWorker 冷開機 ···········.205
開啟 Navigation Preload ·····.206
消費 Navigation Preload ·····.206
15.5 小結 ······························.207
第 16 章 字體對性能的影響 ·············.208
16.1 字體導致的佈局偏移 ············.208
如何定位佈局偏移 ···········.208
16.2 如何避免字體帶來的佈局偏移 ···.210
如何儘快載入字體 ···········.211
字體檔的格式 ··············.211
字體的載入 ···················.212
預載入字體 ···················.213
裁剪字體的大小 ··············.214
16.3 小結 ······························.214
第 5 篇 前端工程與性能
第 17 章 構建工具和性能 ················.218
17.1 為什麼需要打包 ·················.219
CommonJS ····················.220
AMD ···························.220
CMD ···························.221
非同步模組載入器 ··············.222
依賴載入優化 ················.223
模組打包器 ···················.224
ES Module ····················.225
17.2 構建工具可以做什麼 ············.226
構建工具和構建優化 ········.227
為什麼要優化打包體積 ·····.227
Bundle 分析 ···················.228
Tree Shaking ··················.229
Scope Hoisting ················.231
Code Splitting ·················.233
代碼壓縮 ······················.234
Vite 和 Bundleless ············.237
17.3 小結 ······························.237
第 18 章 伺服器端渲染和性能 ··········.239
18.1 SSR 和同構 ······················.241
18.2 SSR 的性能優化 ·················.241
緩存 ·······························.242
數據預取 ·························.245
按需渲染 ·························.245
流式渲染 ·························.246
18.3 小結 ······························.246
第 6 篇 跨端技術與 CDN
第 19 章 WebView 和性能 ···············.248
19.1 WebView 和 Native 的區別 ······.249
LayoutInflater ·················.249
載入 XML 的具體過程 ······.250
Measure ························.250
Layout ·························.251
Paint ···························.252
Surface ·························.253
SurfaceFlinger ·················.253
差異 ····························.253
19.2 WebView 的通信成本 ···········.254
JavaScript 調用 Native ········.254
Native 調用 JavaScript ········.258
雙向通信 ······················.258
通信對性能的影響 ···········.259
減少通信資料量 ··············.259
避免頻繁通信 ·················.259
19.3 React Native 的懶載入有何
不同 ······························.260
Web 實現 ·····················.260
基於滾動容器的懶載入 ·····.260
基於位置獲取的懶載入 ·····.262
虛擬列表 ······················.263
19.4 React Native 如何減小打包
體積 ······························.265
Metro ··························.265
度量 ···························.266
分析 ···························.266
手動 Tree Shaking ············.267
利用 Babel 外掛程式進行優化 ···.269
體積和性能的關係 ···········.271
19.5 API 並行請求 ····················.271
發起請求 ·························.272
請求攔截 ·························.273
一致性檢驗 ······················.274
命中率分析 ······················.274
19.6 小結 ······························.274
第 20 章 CDN 和性能 ····················.275
20.1 什麼是 CDN ······················.275
解析 ·······························.276
邊緣節點 ·························.276
回源 ·······························.277
緩存策略 ·························.277
20.2 如何提升緩存命中率 ············.278
如何在端側統計緩存命中的
情況 ····························.278
減少緩存分裂 ·················.279
緩存忽略動態參數 ···········.279
歸一化 Vary Header ··········.280
長效緩存 ······················.280
20.3 動態加速 ·························.281
海外加速 ·························.282
連接複用 ·························.282
用戶端連接複用 ················.282
HTTPS 優化 ·····················.283
動靜分離 ·························.283
壓縮 ·······························.284
什麼場景適合使用動態加速 ··.284
20.4 自動 polyfill ······················.284
什麼是 polyfill ················.284
Polyfill.io ······················.285
實現原理 ······················.287
20.5 邊緣計算和性能 ·················.288
CDN 的可程式設計功能 ··········.288
Hello World ···················.289
自訂 Cache Key ············.289
前置重定向 ···················.290
流式渲染 ······················.290
20.6 小結 ······························.291

 

詳細資料

  • ISBN:9787121442407
  • 規格:平裝 / 292頁 / 16k / 19 x 26 x 1.46 cm / 普通級 / 單色印刷 / 1-1
  • 出版地:中國

最近瀏覽商品

 

相關活動

  • 【科普、飲食、電腦】高寶電子書暢銷書展:人生就是選擇的總和,全展75折起
 

購物說明

溫馨提醒您:若您訂單中有購買簡體館無庫存/預售書或庫存於海外廠商的書籍,建議與其他商品分開下單,以避免等待時間過長,謝謝。

大陸出版品書況:因裝幀品質及貨運條件未臻完善,書況與台灣出版品落差甚大,封面老舊、出現磨痕、凹痕等均屬常態,故簡體字館除封面破損、內頁脫落...等較嚴重的狀態外,其餘所有商品將正常出貨。 

 

請注意,部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

調貨時間:若您購買海外庫存之商品,於您完成訂購後,商品原則上約45個工作天內抵台(若有將延遲另行告知)。為了縮短等待的時間,建議您將簡體書與其它商品分開訂購,以利一般商品快速出貨。 

若您具有法人身份為常態性且大量購書者,或有特殊作業需求,建議您可洽詢「企業採購」。 

退換貨說明 

會員所購買的商品均享有到貨十天的猶豫期(含例假日)。退回之商品必須於猶豫期內寄回。 

辦理退換貨時,商品必須是全新狀態與完整包裝(請注意保持商品本體、配件、贈品、保證書、原廠包裝及所有附隨文件或資料的完整性,切勿缺漏任何配件或損毀原廠外盒)。退回商品無法回復原狀者,恐將影響退貨權益或需負擔部分費用。 

訂購本商品前請務必詳閱商品退換貨原則

  • 翦商作者新作79折
  • 針灸匠張寶旬
  • 浪漫小說精選3本72折