目 錄
第1章 基準測試技術 1
1.1 PHP應用程序棧 1
1.2 基準測試實用工具 2
1.3 定義請求/響應生命周期 3
1.4 Apache Benchmark 4
1.4.1 安裝Apache Benchmark 4
1.4.2 運行Apache Benchmark 5
1.4.3 弄清響應的含義 6
1.4.4 ab選項標記 8
1.4.5 ab陷阱 11
1.5 Siege 12
1.5.1 安裝Siege 12
1.5.2 運行Siege 13
1.5.3 分析結果 13
1.5.4 Siege選項標記 15
1.5.5 測試很多URL 15
1.6 影響基準測試數字 16
1.6.1 地理位置 16
1.6.2 旅行的數據包 16
1.6.3 響應的大小 16
1.6.4 代碼復雜性 17
1.6.5 瀏覽器行為 18
1.6.6 Web服務器設置 18
1.7 小結 19
第2章 提高客戶端下載和呈現性能 20
2.1 優化響應的重要性 21
2.2 Firebug 21
2.2.1 安裝Firebug 22
2.2.2 Firebug性能選項卡 22
2.2.3 Console選項卡 23
2.2.4 Net選項卡 25
2.3 YSlow 26
2.3.1 YSlow v2規則集 26
2.3.2 安裝YSlow 27
2.3.3 啓動YSlow 28
2.4 Page Speed 30
2.4.1 安裝Page Speed 31
2.4.2 運行中的Page Speed 31
2.5 優化工具 32
2.5.1 JavaScript優化 33
2.5.2 JavaScript的放置位置 33
2.5.3 精簡JavaScript 36
2.6 精簡工具 37
2.7 YUI Compressor 38
2.8 Closure Compiler 38
2.8.1 減少資源請求 39
2.8.2 使用服務器端壓縮 39
2.9 圖像壓縮 39
2.10 Smush.it 40
2.11 小結 42
第3章 PHP代碼優化 43
3.1 PHP最佳實踐 43
3.1.1 PHP的經濟性 45
3.1.2 require與require_once 45
3.1.3 提前計算循環長度 47
3.1.4 使用foreach、for、while循環訪問數組元素 49
3.1.5 文件訪問 50
3.1.6 更快速地訪問對象屬性 52
3.2 使用VLD、strace和Xdebug一探究竟 54
3.2.1 用VLD查看Opcode函數 54
3.2.2 使用strace進行C級跟蹤 56
3.3 發現瓶頸 58
3.3.1 Xdebug 2:PHP調試工具 58
3.3.2 驗證安裝 60
3.3.3 安裝基於GUI的工具 61
3.4 小結 64
第4章 Opcode緩存 65
4.1 迴顧路綫圖 65
4.2 PHP的生命周期 66
4.3 Opcode緩存工具 68
4.3.1 Alternative PHP Cache 68
4.3.2 XCache 75
4.3.3 用XCache緩存 76
4.3.4 XCache設置 77
4.3.5 eAccelerator 78
4.3.6 eA設置 82
4.4 小結 84
第5章 變量緩存 85
5.1 應用程序的性能路綫圖 85
5.2 實現變量緩存的價值 86
5.3 示例項目:創建錶 87
5.3.1 獲取記錄 88
5.3.2 計算讀取數據庫的開銷 89
5.4 APC緩存 93
5.4.1 將數據添加到緩存中 93
5.4.2 對APC進行基準測量 94
5.5 Memcached 96
5.5.1 安裝Memcached 96
5.5.2 啓動memcached服務器 97
5.5.3 在PHP中使用memcached 97
5.6 小結 101
第6章 選擇正確的Web服務器 102
6.1 選擇適閤你的Web服務器程序包 103
6.1.1 安全性和穩定性非常重要 103
6.1.2 找到具有豐富知識的工程師非常重要 103
6.1.3 你的網站主要是靜態內容 103
6.1.4 你在托管服務中托管 103
6.1.5 你正在使用不常見的PHP 擴展 103
6.2 Web服務器的使用情況圖錶 103
6.3 Web服務器請求的處理 104
6.4 Web服務器硬件 105
6.5 對Web服務器進行分類 106
6.6 Apache HTTPD 106
6.6.1 Apache Daemon命令行 107
6.6.2 Apache多處理模塊 108
6.7 瞭解Apache模塊 109
6.7.1 添加動態Apache模塊 110
6.7.2 刪除動態Apache模塊 110
6.8 關於Apache的最後幾點 111
6.9 lighttpd 111
6.9.1 安裝lighttpd 111
6.9.2 lighttpd配置設置 113
6.9.3 比較靜態負載內容 114
6.9.4 在lighttpd上安裝PHP 115
6.10 Nginx 118
6.10.1 安裝Nginx 118
6.10.2 Windows安裝 121
6.11 Nginx作為靜態Web服務器 122
6.11.1 安裝FastCGI PHP 123
6.11.2 Nginx基準測試 124
6.12 小結 126
第7章 優化Web服務器和內容交付 127
7.1 測定Web服務器的性能 127
7.2 瞭解應用程序的內存占用情況 129
7.3 優化Apache中的進程 130
7.3.1 控製Apache客戶端(Prefork MPM) 131
7.3.2 優化內存使用和防止産生交換 131
7.4 其他Apache配置調整 131
7.4.1 使用.htaccess文件和AllowOverride 132
7.4.2 使用FollowSymlinks 133
7.4.3 使用DirectoryIndex 133
7.4.4 關閉HostnameLookup 133
7.4.5 啓用Keep-Alive 134
7.4.6 使用mod_deflate來壓縮內容 134
7.5 擴展到單颱服務器之外 135
7.5.1 使用Round-Robin DNS 135
7.5.2 使用負載均衡器 135
7.5.3 使用直接服務器返迴 137
7.5.4 在服務器場的成員之間共享會話 138
7.5.5 與共享文件係統共享資産 139
7.5.6 與獨立資産服務器共享資産 140
7.5.7 與內容分發網絡共享資産 140
7.6 使用分布式架構的陷阱 141
7.6.1 緩存一緻性問題 141
7.6.2 緩存版本問題 141
7.6.3 用戶IP地址跟蹤 142
7.6.4 多米諾骨牌或級聯失敗效應 143
7.6.5 部署失敗 143
7.7 監視應用程序 144
7.8 小結 144
第8章 數據庫優化 145
8.1 MySQL簡介 146
8.2 瞭解MySQL存儲引擎 146
8.2.1 MyISAM:原始引擎 147
8.2.2 InnoDB:專業級的選擇 147
8.2.3 選擇存儲引擎 148
8.3 瞭解MySQL如何使用內存 148
8.3.1 InnoDB與MyISAM內存使用的比較 149
8.3.2 每服務器與每連接(綫程)內存使用的比較 149
8.4 查找配置文件 150
8.4.1 Mysqltuner.pl:優化數據庫服務器的內存 151
8.4.2 示例服務器可能齣現的問題 154
8.4.3 優化InnoDB 155
8.5 找到有問題的查詢 155
8.6 分析有問題的查詢 157
8.7 PHP數據庫應用程序的建議 158
8.7.1 保持獨立的讀寫連接 158
8.7.2 默認使用“utf8”(多字節Unicode)字符集 158
8.7.3 使用“UTC”日期格式 159
8.8 小結 160
附錄A 在Windows上安裝Apache、 MySQL、PHP和PECL 161
附錄B 在Linux上安裝Apache、 MySQL、PHP和PECL 174
· · · · · · (
收起)