web應用程式基本上都是在瀏覽器地址欄輸入一段網站,然後進入,最後瀏覽器顯示你想要的東西。 這就是用戶所能體會到的東西。那作為程式員我們看到了什麼呢? 一次HTTP 請求主要的流程是: 1、DNS伺服器解析功能變數名稱(瀏覽器地址欄的地址)獲取相應的IP地址、埠號、 服務名。 2、客戶端根據解析後的地址向
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依賴。
當然再好的伺服器也有一個訪問量度,如果用戶很多,訪問量很大。那就使用多台伺服器。也就是所謂的集群