如下爲閱讀《構建高性能web站點》郭欣 著 javascript
這本書的適合讀者:php
1.編寫web程序、關心站點性能,而且但願本身作的更加出色的開發人員css
2.關心性能和可用性的web架構師html
3.但願構建高性能web站點的技術負責人java
4.實施web站點性能優化或者規模擴展的運維人員web
5.與web性能有關的測試人員數據庫
第一章的重點總結apache
1.等待的真相瀏覽器
a) 在用戶等待的時間裏,大概發生瞭如下幾部分時間:緩存
i. 數據在網絡上傳輸的時間:包括兩個部分,瀏覽器端主機發出請求通過網絡到達服務器的時間,服務器迴應數據通過網絡到達瀏覽器主機的時間。也稱爲響應時間,他的決定因素主要包括髮送的數據量和網絡帶寬。站點服務器處理請求並回應數據的時間-
ii. 站點服務器處理請求並生成迴應數據的時間。主要消耗在服務器端,包括很是多的環節,咱們通常用「每秒處理請求數」指標來衡量這部分時間,也稱吞吐率:單位時間內處理的請求數。影響吞吐率的因素很是多,好比服務器的併發策略、I/O模型、I/O性能、CPU核數,固然也包括應用程序自己的邏輯複雜度
iii. 瀏覽器本地計算和渲染的時間。主要消耗在瀏覽器端。依賴因素包括瀏覽器採用的併發策略、樣式渲染方式、腳本解釋器的性能、頁面大小、頁面組件數量、頁面組件緩存情況、頁面組件域名分佈以及域名DNS解析等
2.瓶頸在哪裏
a) 系統的瓶頸是指影響性能的關鍵因素,這個因素隨着系統的運行又會發生不斷的變化或遷移。一旦真正找到影像系統性能的主要因素,堅定對其進行調整和優化
3.增長帶寬
4.減小網頁中的http請求
a) 設計更簡單的網頁,使其包含較少的圖片和腳本,但可能犧牲了美觀和用戶交互
b) 將多個圖片合併爲一個文件,利用css背景圖片的偏移技術呈如今網頁中,避免多個圖片的下載
c) 合併javascript腳本或者css樣式表
d) 充分利用http中瀏覽器的cache策略,減小重複下載
5.加快服務器腳本計算速度
a) 對於擁有較強商業支持的腳本語言,均有內置的優化方案。好比解釋器對某個腳本程序第一次解釋的時候將中間代碼緩存起來,以供下次使用。
b) 對於開源類的腳本語言也有不少第三方組件提供此功能。好比php的apc組件等。下載地址:http://pecl.php.net/package/apc,參考學習:http://www.cnblogs.com/shamrocker/archive/2012/08/23/2651873.html
6.使用動態內容緩存:將動態內容的html輸出結果緩存起來,成千上萬的緩存文件如何存儲
7.使用數據緩存:數據緩存存儲在哪裏呢?須要考慮多方面的因素:速度、共享、
經常使用緩存技術參考:http://www.cnblogs.com/softwaredevelop/archive/2010/04/07/1706322.html
8.將動態內容靜態化:雖然避免了可觀的重複計算,可是每次還須要調用動態腳本解釋器判斷緩存是否過時以及讀取緩存,這彷佛有些多餘,並且關鍵消耗了很多時間
9.更換web服務器軟件:有人拿着所謂的測試數聽說apache已通過時,你相信嗎?另外一方面,你正在使用的web服務器軟件也許讓你無比的自豪,可你知道複雜的配置背後的本質嗎?你知道爲何它僅僅在處理你的站點請求時如此出色嗎?若是讓你編寫web服務器軟件,你可讓他更快一些嗎。咱們必須中止盲目的選擇,中止對錶面現象的崇拜,咱們須要學習一些稍顯底層的知識來武裝本身。
10.頁面組件分離
11.合理部署服務器:ip,運營商等的選擇
12.使用負載均衡:須要經過各類不一樣的方法實現web負載均衡。多是簡單的http重定向,或者是給予DNS的輪詢解析,或者經過反向代理服務器來實現負載均衡調度,還能夠經過lvs來組建服務器集羣
13.優化數據庫:1.應用程序數據訪問組件設計,合理的數據表結構設計,頻繁的數據庫連接和釋放,合理使用各類類型的索引,瞭解數據庫存儲引擎特性。將數據散列在多臺主機,包括必要的冗餘數據,以此來合理的分散數據庫的密集訪問,數據庫擴展便成爲咱們考慮的方案
14.考慮可擴展性:可擴展性的目的是適應負載的變化
15.減小視覺等待