我們總是希望壹臺服務器在單位時間內能處理的請求越多越好,這也成了web服務器的能力高低的關鍵所在。服務器之所以可以同時處理多個請求,在於操作系統通過多執行流體系設計,使得多個任務可以輪流使用系統資源,這些資源包括CPU、內存以及I/O等。這就需要選擇壹個合適的並發策略來合理利用這些資源,從而提高服務器的並發處理能力。這些並發策略更多的應用在apache、nginx、lig上合法註冊的IP地址映射為多個內部服務器的IP地址,對每次TCP連接請求動態使用其中壹個內部IP地址,達到負載均衡的目的。此外,還有工作在數據鏈路層(第二層)的直接路由方式下的負載均衡,它通過修改數據包目標MAC地址來實現。以及,基於IP隧道的負載均衡,在這種方式下可以將實際服務器根據需要部署在不同的地域,並根據就近訪問的原則來轉移請求,CDN服務便是基於IP隧道技術來實現的。
Web負載均衡在擴展web服務器規模的同時也給web站點性能優化提供了壹個更大更復雜也更靈活自由的平臺,基於該平臺性能優化的策略包括***享文件系統,內容分發與同步,分布式文件系統,分布式計算,分布式緩存等等。
五、web緩存技術
web緩存技術被認為是減輕服務器負載、降低網絡擁塞、增強萬維網可擴展性的有效途徑,其基本思想是利用客戶訪問的時間局部性(Temporal Locality)原理,將客戶訪問過的內容在Cache中存放壹個副本,當該內容下次被訪問時,不必連接到駐留網站或重新計算生成,而是由Cache中保留的副本提供。Web緩存可以帶來如下的好處:
(1) 減少網絡流量,從而減輕網絡擁塞;這是因為緩存避免了壹部分HTTP請求。
(2) 降低客戶訪問延遲,其主要原因有:①已緩存的內容,客戶可以緩存獲取而不是從服務器獲取或重新計算生成,從而減小了傳輸延遲縮短了響應時間;②沒有被緩存的內容由於網絡擁塞及服務器負載的減輕而可以較快地被客戶獲取;
(3) 由於客戶的部分或者全部請求內容可以從通過緩存獲取,從而減輕了遠程服務器負載。
(4) 如果由於服務器故障或網絡故障造成服務器無法響應客戶請求,客戶可以從緩存中獲取緩存的內容副本,使得web站點服務的魯棒性(Robustness)得到了加強。
可以看出web緩存能給web站點帶可觀的性能提升。其實在用戶發出請求到壹幅完整的網頁呈現在用戶面前這壹過程中緩存無處不在,下面是web性能優化時常用的緩存技術,妳會發現緩存被廣泛應用在各個環節。
瀏覽器緩存:瀏覽器壹般會在用戶文件系統中創建壹個目錄,用於存放緩存文件,並給每個緩存文件打上必要的標記,比如過期時間等。這些標記主要用於瀏覽器和服務器之間的緩存協商。
Web服務器緩存:壹個URL在壹段較長時間內對應壹個唯壹的響應內容,比如靜態內容或者更新不太頻繁的動態內容,web服務器可將響應內容緩存起來,下次web服務器便可以在收到請求後立即拿出事先緩存好的響應內容並返回給瀏覽器。
代理服務器緩存:暴露在互聯網中與後端的web服務器通過內部網絡相連的前端服務器稱為反向代理服務器,建立在反向代理服務器上的緩存稱為反向代理緩存。暴露在互聯網中與後端的web客戶端通過內部網絡相連的前端服務器稱為正向代理服務器,建立在正向代理服務器上的緩存稱為正向代理緩存。代理服務器緩存位於客戶端和web服務器之間,可以將它看做二者之間的壹個中繼站。它的存在可以改善客戶端的訪問速度、提升web server的服務能力、安全性等等。
總***分析總結了五種技術,主要希望能夠對web server性能優化這塊提供壹個整體的認識。後續會專門就web緩存技術發表壹些自己的看法。