在Web 變得越來越復雜的時代,解決Web 性能問題正當時。本書旨在幫助讀者創(chuàng)建更加快速的網(wǎng)站,內(nèi)容涵蓋Web 性能的基礎知識、性能評估工具、CSS 優(yōu)化、圖像優(yōu)化、字體優(yōu)化、JavaScript 相關的內(nèi)容、Brotli 壓縮算法、資源提示、配置緩存策略、HTTP/2,等等。
1.全面講解Web性能工具和技術(shù),讓種種Web性能問題迎刃而解;
2.注重實戰(zhàn),結(jié)合豐富示例,助你創(chuàng)建快速靈活的網(wǎng)站,提升用戶體驗。
對于網(wǎng)站來說,精巧的功能、時尚的設計和良好的營銷策略固然重要,但如果訪問者認為網(wǎng)站速度慢,那么它依然是失敗的。由于網(wǎng)絡環(huán)境不可預測,而且現(xiàn)在的網(wǎng)站比以往任何時候都龐大,所以需要通過提升速度來在競爭中脫穎而出。
本書是創(chuàng)建快速網(wǎng)站的指南,指導你如何以正確的方式創(chuàng)建高性能網(wǎng)站。書中介紹了如何加快向用戶交付站點資源的速度、提高渲染速度、減少網(wǎng)站占用空間;探討了HTTP/2等能夠大幅提升網(wǎng)站速度的技術(shù);闡述了如何構(gòu)建一個自動化的工作流以完成常見的優(yōu)化任務,同時提高開發(fā)效率。
如果你是Web開發(fā)人員,想創(chuàng)建快速靈活的網(wǎng)站,或者提升已有網(wǎng)站的性能,打造更佳的用戶體驗,那么本書不失為一個理想的選擇。
杰里米·瓦格納(Jeremy Wagner)
Web性能咨詢師、Web前端開發(fā)者,在多家機構(gòu)和大公司積累了十余年經(jīng)驗。撰寫過大量Web性能方面的圖書和文章,還經(jīng)常在各種Web開發(fā)會議上發(fā)表演講。
第 1 章 理解Web 性能 1
1.1 理解Web 性能 1
1.1.1 Web 性能和用戶體驗 1
1.1.2 Web 瀏覽器如何與Web 服務器通信 2
1.1.3 Web 頁面如何加載 4
1.2 上手準備 5
1.2.1 安裝Node.js 和Git 6
1.2.2 下載并運行客戶的網(wǎng)站 6
1.2.3 模擬網(wǎng)絡連接 7
1.3 檢查客戶網(wǎng)站 8
1.4 優(yōu)化客戶網(wǎng)站 10
1.4.1 縮小資源 11
1.4.2 使用服務器壓縮 13
1.4.3 壓縮圖像 16
1.5 最終性能測試 18
1.6 小結(jié) 19
第 2 章 使用評估工具 20
2.1 使用Google PageSpeed Insights 進行評估 20
2.1.1 評估網(wǎng)站性能 20
2.1.2 使用Google Analytics 進行批量報告 23
2.2 使用基于瀏覽器的評估工具 24
2.3 檢查網(wǎng)絡請求 25
2.3.1 查看計時信息 25
2.3.2 查看HTTP 請求和響應頭 27
2.4 渲染性能檢查工具 29
2.4.1 理解瀏覽器如何渲染網(wǎng)頁 29
2.4.2 使用Google Chrome 的Performance 面板 30
2.4.3 識別問題事件:jank 是元兇 32
2.4.4 用JavaScript 在時間線中標記點 37
2.4.5 其他瀏覽器中的渲染分析器 38
2.5 在Chrome 中對JavaScript 進行基準測試 39
2.6 模擬和監(jiān)控設備 40
2.6.1 在桌面Web 瀏覽器中模擬設備 41
2.6.2 在Android 設備上遠程調(diào)試網(wǎng)站 42
2.6.3 在iOS 設備上遠程調(diào)試網(wǎng)站 43
2.7 創(chuàng)建自定義網(wǎng)絡節(jié)流配置 44
2.8 小結(jié) 45
第3 章 優(yōu)化CSS 47
3.1 直入主題,保持DRY 47
3.1.1 簡寫CSS 47
3.1.2 使用CSS 淺選擇器 50
3.1.3 挑選淺選擇器 51
3.1.4 LESS 和SASS 預編譯器:簡單就是美 52
3.1.5 不要重復自己 53
3.1.6 實現(xiàn)DRY 53
3.1.7 使用csscss 查找冗余 54
3.1.8 分割CSS 56
3.1.9 自定義框架下載 57
3.2 移動優(yōu)先即用戶優(yōu)先 58
3.2.1 移動優(yōu)先與桌面優(yōu)先 58
3.2.2 Mobilegeddon 算法 61
3.2.3 使用Google 的移動友好指南 62
3.2.4 驗證網(wǎng)站的移動友好性 63
3.3 對CSS 進行性能調(diào)整 63
3.3.1 避免使用 @import 聲明 63
3.3.2 @import 串行請求 64
3.3.3
并行請求 64
3.3.4 在中放置CSS 65
3.3.5 防止無樣式內(nèi)容閃爍 65
3.3.6 提高渲染速度 66
3.3.7 使用更快的選擇器 66
3.3.8 構(gòu)建和運行基準測試 67
3.3.9 檢查基準測試結(jié)果 68
3.3.10 盡可能使用flexbox 69
3.3.11 對比盒子模型和flexbox 樣式 69
3.3.12 檢查基準測試結(jié)果 70
3.4 使用CSS 過渡 71
3.4.1 使用CSS 過渡 71
3.4.2 觀察CSS 過渡性能 73
3.4.3 使用will-change 屬性優(yōu)化過渡 74
3.5 小結(jié) 75
第4 章 理解關鍵CSS 76
4.1 關鍵CSS 及其解決的問題 76
4.1.1 理解折疊 76
4.1.2 理解渲染阻塞 77
4.2 關鍵CSS 的原理 78
4.2.1 加載首屏樣式 79
4.2.2 加載首屏以外內(nèi)容的樣式 79
4.3 實現(xiàn)關鍵CSS 80
4.3.1 配置并運行菜譜網(wǎng)站 81
4.3.2 識別和分離首屏CSS 82
4.3.3 加載首屏以外內(nèi)容的CSS 88
4.4 權(quán)衡收益 89
4.5 提升可維護性 91
4.6 多頁網(wǎng)站的注意事項 91
4.7 小結(jié) 92
第5 章 響應式圖像 94
5.1 為什么要考慮圖像傳輸 94
5.2 理解圖像類型及其應用 96
5.2.1 使用光柵圖像 96
5.2.2 使用SVG 圖像 99
5.2.3 選擇圖像格式 100
5.3 CSS 中的圖像傳輸 101
5.3.1 使用媒體查詢在CSS 中適配顯示器 101
5.3.2 通過媒體查詢適配高DPI 顯示器 104
5.3.3 在CSS 中使用SVG 背景圖像 106
5.4 在HTML 中傳輸圖像 106
5.4.1 圖像的全局max-width規(guī)則 107
5.4.2 使用srcset 107
5.4.3 使用