web應用程序基本上都是在浏覽器地址欄輸入一段網站,然後進入,最後浏覽器顯示你想要的東西。
這就是用戶所能體會到的東西。那作為程序員我們看到了什麼呢?
一次HTTP 請求主要的流程是:
1、DNS服務器解析域名(浏覽器地址欄的地址)獲取相應的IP地址、端口號、 服務名。
2、客戶端根據解析後的地址向服務啊發送請求(建立與服務器的聯接)。
3、服務器根據用戶的請求信息處理請求,並做出響應。
4、浏覽器更具服務器響應的數據(HTML/css/js)渲染頁面。
那要優化程序性能,作為程序員我們能優化哪裡、怎麼優化呢。
第一步:我們沒法控制。
第二步:建立鏈接更多的是網絡問題。我們能做的也不多。
第三步:服務器處理請求,我們做的就多了。因為我們是程序員嗎,我們就是處理用戶請求業務的。
a、處理業務肯定要與數據庫打交道,我們可以使用數據源使對數據庫的鏈接做到最優(C3PO、DBCP)
b、與數據庫建立鏈接後,數據庫處理我們的請求,這就要求我們的數據庫設計優化、SQL語句的優化。
c、對數據做緩存處理,有些請求的數據變化不平凡,我們可以對數據做緩存(hibernate的二級緩存 、 ehcache)。
d、對於一些對數據是實時性要求不高的頁面可以做網頁緩存(OSCache)
第四步:浏覽器渲染HTML頁面,我們都知道一個HTML頁面中往往存在大量的腳本(css、js)而,浏覽器在渲染頁面時遇到每個
<link rel="t" href" type="text/css">和 <script src=""></script>標簽時都會向服務啊發送一次HTTP請求,而每次HTTP
請求的代價很大,所以我們要 :
a、盡量減少腳本文件。
b、盡量使腳本文件變小(壓縮後發布使開發版與生產版不同)
c、對於大量的JS腳本我們可以使用 requeirJs去管理我們的js依賴。
當然再好的服務器也有一個訪問量度,如果用戶很多,訪問量很大。那就使用多台服務器。也就是所謂的集群