技術(shù)資訊
大型網(wǎng)站的最大特點是什么
2014-10-23 22:06:57
一個名副其實的大型網(wǎng)站,從速度、技術(shù)構(gòu)架、用戶體驗都是要做到與普通網(wǎng)站更優(yōu)才行。有人說性能就是訪問速度快慢,這是最直觀的說法,也是用戶的真實體驗。一個用戶從輸入網(wǎng)址到按下回車鍵,看到網(wǎng)頁的快慢,這就是性能。對于我們來說,需要去挖掘這個過程,因為這決定我們怎么去做性能優(yōu)化。
這中間發(fā)生了什么?
用戶訪問網(wǎng)站的整個流程:用戶輸入網(wǎng)站域名,通過DNS解析,找到目標服務(wù)器IP,請求數(shù)據(jù)經(jīng)互聯(lián)網(wǎng)達到目標服務(wù)器,目標服務(wù)器收到請求數(shù)據(jù),進行處理(執(zhí)行程序、訪問數(shù)據(jù)庫、文件服務(wù)器等)。處理完成,將響應(yīng)數(shù)據(jù)又經(jīng)互聯(lián)網(wǎng)返回給用戶瀏覽器,瀏覽器得到結(jié)果進行計算渲染顯示給用戶。
我們把整個過程,分為三段路徑:
1、第一段在用戶和瀏覽器端,主要負責(zé)發(fā)出用戶請求,以及接受響應(yīng)數(shù)據(jù)進行計算渲染顯示給用戶;
2、第二段在網(wǎng)絡(luò)上,負責(zé)對請求數(shù)據(jù)、響應(yīng)數(shù)據(jù)的傳輸;
3、第三段在網(wǎng)站服務(wù)器端,負責(zé)對請求數(shù)據(jù)進行處理(執(zhí)行程序、訪問數(shù)據(jù)庫、文件等),并將結(jié)果返回;
第一路徑
第一路徑花費的時間包括輸入域名發(fā)起請求的時間和瀏覽器收到響應(yīng)后計算渲染的時間。
輸入域名發(fā)起請求,實質(zhì)過程是:
1、用戶在瀏覽器輸入要訪問的網(wǎng)站域名;
2、本地DNS請求網(wǎng)站授權(quán)的DNS服務(wù)器對域名進行解析,并得到解析結(jié)果即IP地址(并將IP地址緩存起來)。
3、向目標IP地址發(fā)出請求。
從這個過程我們可以看到,優(yōu)化的地方主要是減少DNS解析次數(shù),而如果用戶瀏覽器設(shè)置了緩存,則再第二次訪問相同域名的時候就不會去請求DNS服務(wù)器,直接用緩存中的IP地址發(fā)出請求。因此這個過程主要取決于瀏覽器的設(shè)置?,F(xiàn)在主流的瀏覽器默認設(shè)置了DNS的預(yù)取功能(DNS Prefetch),當然你也可以主動告知瀏覽器我的網(wǎng)站需要做DNS預(yù)?。?/p>
瀏覽器將數(shù)據(jù)進行計算渲染的過程:
1、瀏覽器解析響應(yīng)數(shù)據(jù);
2、瀏覽器創(chuàng)建DOM樹;
3、瀏覽器下載CSS樣式,并應(yīng)用到DOM樹,進行渲染;
4、瀏覽器下載JS文件,開始解析執(zhí)行;
5、顯示給用戶。
從這個過程,我們可以找出不少可以優(yōu)化的地方。首先我們可以盡量控制頁面大小,使得瀏覽器解析的時間更短;并且將多個CSS文件、JS文件文件合并壓縮減少文件下載的次數(shù)和大?。涣硗庾⒁鈱SS放在頁面前面,JS訪問頁面后面,這樣便于頁面首先能渲染出來,再執(zhí)行js腳本,對于用戶來說有更好的體驗。最后我還可以設(shè)置瀏覽器緩存,下次訪問時從緩存讀取內(nèi)容,減少http請求。
該代碼說明了瀏覽器啟用了緩存并在5秒內(nèi)不會再次訪問服務(wù)器。注意緩存的設(shè)置需要結(jié)合你的業(yè)務(wù)特性來適當配置。
以下是京東商城的HTML簡圖:
css樣式放在html前面,并且進行了合并。
大多數(shù)的JS文件放在頁尾。
第二路徑
第二路徑在網(wǎng)絡(luò)上,花費的時間同樣包括請求數(shù)據(jù)的傳輸時間和響應(yīng)數(shù)據(jù)的傳輸時間,這個兩個時間取決于數(shù)據(jù)傳輸?shù)乃俣?,這里我們要講一個名詞“帶寬”。什么是帶寬,我們經(jīng)常說帶寬10M,20M是什么意思?我的帶寬20M,這意味著什么?
我們知道帶寬速度分為上行、下行速度,也就是上傳和下載的速度。帶寬20M對于用戶來說則是下載速度20M(20×1024×1024比特率),換算成字節(jié)20M/8=2.5M。也就是說20M的帶寬下載速度理論可達2.5M/s,而對于家庭用戶而言上傳速度一般比下載速度小的多,大約是不到十分之一。而對于網(wǎng)站服務(wù)器(企業(yè)用戶)來說,則不然,一般上行速度等于下載速度。這也是運營商根據(jù)實際需求分配的,畢竟用戶的主要需求是下載數(shù)據(jù),而不是上傳數(shù)據(jù)。
整個流程從傳輸方式看就是:用戶發(fā)送請求數(shù)據(jù)(上傳),網(wǎng)站服務(wù)器接受請求數(shù)據(jù)(下載),網(wǎng)站服務(wù)器返回響應(yīng)數(shù)據(jù)(上傳),用戶接受響應(yīng)數(shù)據(jù)(下載)。對于用戶來說,上傳數(shù)據(jù)是很小的(Url參數(shù)),而下載數(shù)據(jù)是較大的(響應(yīng)數(shù)據(jù));對于服務(wù)器來說,下載數(shù)據(jù)是很小的(url參數(shù)),上傳數(shù)據(jù)是較大(響應(yīng)數(shù)據(jù))。
理解了這個,我們可以解釋為什么有時用戶反映為什么自己的帶寬足夠,但打開某些網(wǎng)站仍然很慢,就是因為盡管用戶的下載速度很快,但網(wǎng)站服務(wù)器的上傳速度很慢,這就像一個抽水管和一個出水管,不管抽水管再大,但出水管很小,同樣抽到的水量是有限的。
了解了這個原理我們來看怎么提高數(shù)據(jù)傳輸?shù)乃俣?,首先用戶的上傳、下載速度我們是無法決定的,我們能決定的是網(wǎng)站服務(wù)器的上傳、下載速度,所以我們可以做的是適當?shù)脑黾臃?wù)器帶寬(帶寬是很貴的,盲目的增加只會增加不必要成本)。購買合適的帶寬需要根據(jù)網(wǎng)站業(yè)務(wù)特性、規(guī)模以及結(jié)合運維人員的經(jīng)驗來選擇。通??梢钥紤]的算法,即根據(jù)一次響應(yīng)數(shù)據(jù)的大小,乘以PV數(shù),除以對應(yīng)的高峰時間段,從而大致估算出網(wǎng)站帶寬的需求。
下面我們繼續(xù)進一步研究第二路徑:
上圖表示用戶訪問網(wǎng)站服務(wù)器時網(wǎng)絡(luò)的大致情況,從圖上可以看出假設(shè)網(wǎng)站服務(wù)器從電信網(wǎng)絡(luò)接入,而用戶A作為電信的寬帶用戶,則可以通過電信骨干網(wǎng)快速的訪問到網(wǎng)站服務(wù)器。用戶B,用戶C作為移動和聯(lián)通用戶需要通過運營商的互聯(lián)互通經(jīng)過較長路徑才能訪問到服務(wù)器。
針對這種情況,我們可以采取以下方法來優(yōu)化:
1、在各運營商發(fā)達的地區(qū)的IDC(互聯(lián)網(wǎng)數(shù)據(jù)中心,可以理解成機房)部署網(wǎng)站服務(wù)器,各運營商的用戶即可通過各自的骨干網(wǎng)訪問服務(wù)器。
2、購買代理服務(wù),也就是原來聯(lián)通用戶需要通過聯(lián)通骨干網(wǎng)——>聯(lián)通互聯(lián)互通路由器——>電信骨干網(wǎng)——>網(wǎng)站服務(wù)器的過程。通過代理服務(wù),代理服務(wù)器直連到電信骨干網(wǎng),訪問網(wǎng)站服務(wù)器。
3、在主要地區(qū)城市購買CDN服務(wù),緩存對應(yīng)的數(shù)據(jù),用戶可先從最近的CDN運營商獲取請求數(shù)據(jù)。
第三路徑
第三路徑主要是網(wǎng)站服務(wù)器內(nèi)部處理的過程,當中包括執(zhí)行程序、訪問文件、數(shù)據(jù)庫等資源。
這是對于我們來說最可以發(fā)揮的地方:
1、使用緩存,根據(jù)需要使用本地緩存或分布式緩存;
2、使用異步操作,這種方式不僅可以提高性能,也提高了系統(tǒng)的擴展性;
3、代碼優(yōu)化;
4、存儲優(yōu)化;
緩存
如果緩存數(shù)據(jù)較少,可以利用OSCache實現(xiàn)本地緩存:
當緩存數(shù)據(jù)過多時,利用Memcached實現(xiàn)分布式緩存:
Memcached實現(xiàn)分布式緩存,緩存服務(wù)器之間是互不通信的,也就是我們可以方便的通過增加Memcached服務(wù)器對系統(tǒng)進行擴展。
異步操作
使用同步請求的方式,在高并發(fā)的情況下,會對數(shù)據(jù)庫造成很大的壓力,也會讓用戶感覺響應(yīng)時間過長。異步請求方式,則可以快速的對用戶做出響應(yīng),而具體的數(shù)據(jù)庫操作請求,則通過消息隊列服務(wù)器發(fā)送給數(shù)據(jù)庫服務(wù)器,做具體的插入操作。插入操作的結(jié)果則已其他方式通知客戶端。例如一般在訂票系統(tǒng)當中,出票行為就是異步完成,最終的出票結(jié)果會以郵件或其他方式告知用戶。
代碼優(yōu)化
這里就不在詳細描述。
性能的指標和測試
上面通過解析用戶訪問網(wǎng)站的過程來思考怎么提高用戶感知的性能,對于用戶來言性能就是快和慢。但對于我們來說,不能這樣簡單描述,我們需要去量化他,用一些數(shù)據(jù)指標去衡量它。這里講到幾個名詞:響應(yīng)時間、并發(fā)量、吞吐量。
響應(yīng)時間:就是用戶發(fā)出請求到收到響應(yīng)數(shù)據(jù)的時間;
并發(fā)量:就是系統(tǒng)同時能處理多少用戶請求;
吞吐量:就是單位時間內(nèi)系統(tǒng)處理的請求數(shù)量;
為了通俗的了解這三個概念,我們以高速公路的收費站為例子:響應(yīng)時間是指一輛車經(jīng)過收費站的時間,也就是車輛從進入收費站、付錢、開閘、離開收費站的時間;并發(fā)量是指這個收費站同時能通行多少輛車,可以理解為收費站的出口數(shù)量。吞吐量是指:在一段時間內(nèi),這個收費站通往了多少了車。
這個例子不曉得恰不恰當。
存儲優(yōu)化
大型網(wǎng)站中海量的數(shù)據(jù)讀寫對磁盤造成很大壓力,系統(tǒng)最大的瓶頸還是在磁盤的讀寫??梢钥紤]使用磁盤陣列、分布式儲存來改善存儲的性能。
對于性能測試來說,基本也是圍繞這些方面來測試,下圖說明了性能測試的過程:
左圖表示響應(yīng)時間和并發(fā)用戶量的二維坐標圖,從圖上可以看出,并發(fā)用戶量在一定量增加時,響應(yīng)時間很短,并且沒有太大的起伏,這表示系統(tǒng)目前處于日常運行期,可以很快處理用戶請求(A點之前);隨著并發(fā)量的增加,系統(tǒng)處于請求高峰期,但仍然可以有序的處理用戶請求,響應(yīng)時間較日常有所增加(A、B之間);當并發(fā)量增加到一定數(shù)量時,超過了系統(tǒng)的負載能力,系統(tǒng)處于瀕臨崩潰的邊緣(B、C之間),響應(yīng)時間嚴重過長,直到系統(tǒng)崩潰。
右圖表示吞吐量與并發(fā)用戶量的二維坐標圖,可以看出,隨著并發(fā)用戶量的增加,吞吐量逐漸增加;在并發(fā)量到達一定量時,由于系統(tǒng)處理能力達到最大,吞吐量增加放緩;當并發(fā)量超過系統(tǒng)負載時(E點),系統(tǒng)處理能力開始下降,不能再請求增加的用戶請求,吞吐量反而降低。
近期更新
- [2023-07-26 14:17:28] 為品牌賦能,海外官網(wǎng)品牌數(shù)字化
- [2023-05-06 10:32:26] 青島網(wǎng)站建設(shè)公司,高端網(wǎng)站定制,一站式網(wǎng)站服務(wù)——力圖數(shù)字科技
- [2023-04-27 13:47:54] 高端定制網(wǎng)站建設(shè)——從滿足預(yù)期到走向卓越
- [2023-04-11 09:17:49] H5頁面設(shè)計開發(fā)——移動端傳播利器
- [2022-11-16 10:11:43] windows2012程序在哪
- [2022-04-14 11:01:47] 力圖數(shù)字科技配套網(wǎng)站服務(wù)支持
- [2021-05-18 10:14:11] 青島網(wǎng)站建設(shè)的流程
- [2021-04-29 10:14:38] 企業(yè)定制化官網(wǎng)建設(shè)項目
- [2021-03-05 10:34:45] 移動互聯(lián)時代房地產(chǎn)行業(yè)的微信小程序解決方案
- [2021-01-22 17:29:38] 微信小程序有哪些優(yōu)勢?為什么要開發(fā)微信小程序?
- [2021-01-08 17:28:04] 網(wǎng)站建設(shè)最容易忽略的人性化設(shè)計
- [2020-12-16 16:55:32] 建設(shè)一個常規(guī)的公司網(wǎng)站建設(shè)成本大概是多少?
延伸閱讀
- [2016-08-12 14:33:00] 什么是單點登陸
- [2016-01-17 23:08:31] 網(wǎng)站建設(shè)前應(yīng)該準備什么資料
- [2011-11-27 22:47:04] 什么是面包屑導(dǎo)航?
- [2015-02-16 10:48:17] 關(guān)鍵詞網(wǎng)頁應(yīng)該放到什么位置?
- [2014-03-03 23:39:38] HTML5能做什么?
- [2015-06-29 22:29:11] 網(wǎng)站改版對網(wǎng)站優(yōu)化有什么影響
- [2011-10-24 11:57:02] 為什么要將網(wǎng)站地圖鏈接放在robots.txt?
- [2015-01-22 17:58:31] 做網(wǎng)站優(yōu)化需要達到的目的是什么?
- [2019-08-01 12:30:52] 什么是網(wǎng)站被鏡像了?
- [2016-08-02 11:35:00] 手機網(wǎng)站建設(shè)有什么優(yōu)勢?
- [2009-02-13 16:52:00] 創(chuàng)新還是賺錢,產(chǎn)品設(shè)計師能做什么?
- [2014-07-02 01:57:33] 什么是營銷型網(wǎng)站
解決方案
輪胎行業(yè)網(wǎng)站設(shè)計解決方案 機械行業(yè)網(wǎng)站設(shè)計解決方案 房地產(chǎn)行業(yè)網(wǎng)站設(shè)計解決方案 科技企業(yè)網(wǎng)站設(shè)計解決方案 電子家電網(wǎng)站設(shè)計解決方案 食品行業(yè)網(wǎng)站設(shè)計解決方案 集團公司網(wǎng)站設(shè)計解決方案 企事業(yè)單位網(wǎng)站設(shè)計解決方案 外貿(mào)行業(yè)網(wǎng)站設(shè)計解決方案 健身運動網(wǎng)站設(shè)計解決方案 美容與化妝品網(wǎng)站設(shè)計解決方案 建筑設(shè)計行業(yè)網(wǎng)站設(shè)計解決方案 物流行業(yè)網(wǎng)站設(shè)計解決方案
TAGS關(guān)鍵字
青島做網(wǎng)站多少錢 網(wǎng)站設(shè)計趨勢 網(wǎng)站動畫 營銷型網(wǎng)站建設(shè) 集團性網(wǎng)站 青島網(wǎng)頁設(shè)計 網(wǎng)站SEO 青島網(wǎng)絡(luò)公司 SEO 互聯(lián)網(wǎng) 網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè) 扁平化設(shè)計 高端網(wǎng)站設(shè)計 膠南網(wǎng)站建設(shè)公司 高端輪胎網(wǎng)站設(shè)計 搜索引擎 青島網(wǎng)站設(shè)計哪家好 網(wǎng)站設(shè)計 中小型企業(yè)網(wǎng)站建設(shè) 審美 營銷策略 集團公司網(wǎng)站建設(shè) 青島輪胎網(wǎng)站設(shè)計 搜索引擎蜘蛛 新的元素 視覺靈感 網(wǎng)站優(yōu)化 插畫 色彩心理學(xué) 網(wǎng)站推廣