王偉 譚松榮
摘 要:Web應(yīng)用系統(tǒng)在大量用戶進(jìn)行訪問的情況下容易出現(xiàn)網(wǎng)站響應(yīng)的時間過長、系統(tǒng)崩潰和癱瘓等現(xiàn)象,并且隨著社會不斷地發(fā)展,使用互聯(lián)網(wǎng)的用戶變得越來越多,所以開發(fā)人員要對Web應(yīng)用系統(tǒng)進(jìn)行最大限度的優(yōu)化,以保證Web應(yīng)用系統(tǒng)的使用質(zhì)量。所以改變Web正面臨的問題是刻不容緩的,因此本文主要分析和研究了高并發(fā)Web系統(tǒng)性能的優(yōu)化方法。
關(guān)鍵詞:高并發(fā);Web應(yīng)用系統(tǒng);性能優(yōu)化
中圖分類號:TP311.52 文獻(xiàn)標(biāo)識碼:A 文章編號:2096-4706(2019)03-0022-02
Analysis and Research on Performance Optimization of
High Concurrent Web Application System
WANG Wei,TAN Songrong
(Tianyi iMusic Culture Technology Co.,Ltd.,Guangzhou 510180,China)
Abstract:Web application system is prone to some phenomena such as too long response time,system crash and paralysis when a large number of users visit it. With the continuous development of society,more and more users will use the internet. Therefore,developers should optimize the Web application system to the maximum extent to ensure the quality of the use of the Web application system. Therefore,it is urgent to change the problems that the Web is facing. Therefore,this paper mainly analyses and studies the performance optimization methods of high concurrent Web systems.
Keywords:high concurrency;Web application system;performance optimization
0 引 言
解決Web應(yīng)用系統(tǒng)目前正面臨的問題,開發(fā)人員就要對系統(tǒng)中的前端、后臺程序、數(shù)據(jù)庫等進(jìn)行優(yōu)化,讓服務(wù)器的配置、數(shù)據(jù)庫的性能和Web容器的性能等都得到提高,保證Web應(yīng)用系統(tǒng)在面對高并發(fā)的情況下不出現(xiàn)崩潰、響應(yīng)時間長等問題,提高用戶在使用時的體驗感,使Web應(yīng)用系統(tǒng)的發(fā)展更加良好。
1 Web應(yīng)用系統(tǒng)性能優(yōu)化的必要性
決定Web應(yīng)用系統(tǒng)性能好壞的因素主要有四個,其中包括頁面的響應(yīng)時間、并發(fā)連接的最大化、單位時間內(nèi)需要處理的HTTP的錯誤數(shù)量、服務(wù)器HTTP的帶寬,面對目前市場上Web應(yīng)用系統(tǒng)存在的問題,盡管通過擴(kuò)大服務(wù)器的內(nèi)存以及增加網(wǎng)絡(luò)出口的帶寬等方法使系統(tǒng)的性能得到了一定的提高,但是這些方法還不能有效解決問題的根本所在,并且隨著社會的不斷發(fā)展,使用Web應(yīng)用系統(tǒng)的人數(shù)越來越多,沒有一個精簡、性能優(yōu)良的Web系統(tǒng)根本無法支撐日益增長的人數(shù)需求。
2 Web應(yīng)用系統(tǒng)的優(yōu)化方案
2.1 Web應(yīng)用系統(tǒng)中前端的優(yōu)化方案
要充分對頁面的加載過程進(jìn)行了解才能對Web應(yīng)用系統(tǒng)中的前端進(jìn)行優(yōu)化。通過了解知道,在整個頁面進(jìn)行加載的過程中,其下載到瀏覽器中的是一個不包括圖片格式的HTML文檔,這一下載過程只有整個頁面加載的十分之一,當(dāng)文檔加載完成之后,就會進(jìn)入到一個對頁面進(jìn)行解析的步驟,首先會解析head的標(biāo)簽,在解析的過程中可能會遇到一些引用的JS文件等,這種情況下瀏覽器就不會再繼續(xù)對頁面進(jìn)行加載,而是會先對標(biāo)簽進(jìn)行請求工作,待請求通過之后才會繼續(xù)進(jìn)行解析,當(dāng)該標(biāo)簽被解析完成之后,就會對body的標(biāo)簽繼續(xù)進(jìn)行解析,與解析head標(biāo)簽不同的是,它是會將一個標(biāo)簽所對應(yīng)的SRC的內(nèi)容進(jìn)行請求,其中如果有很多個標(biāo)簽,瀏覽器就會對對應(yīng)的SRC內(nèi)容進(jìn)行并發(fā)的請求。其主要的解析過程如圖1所示。
通過描述相關(guān)的頁面加載過程,可以清楚的知道頁面的質(zhì)量在一定程度上影響了高并發(fā)網(wǎng)站運(yùn)行的速度,如果頁面的內(nèi)存太大,那么在頁面進(jìn)行加載的時候就會耗費比較大的網(wǎng)絡(luò)帶寬,所以,要想在一定程度上提升網(wǎng)站運(yùn)行的速度,就要設(shè)計比較簡潔的網(wǎng)頁,減少一些沒有用的網(wǎng)絡(luò)流量,使帶寬的壓力得到一定的緩解,因此對Web應(yīng)用系統(tǒng)的前端進(jìn)行優(yōu)化,可以做到以下五個步驟:第一,在一定程度上減少引用過多的外部文件,通過將多個外部文件進(jìn)行合并,有效減少網(wǎng)站中HTTP的請求;第二,在頁面進(jìn)行加載的過程當(dāng)中,可以將一些暫時還未用到的外部文件在頁面的底部進(jìn)行加載,有效減少等待的時間;第三,在瀏覽器中緩存一些網(wǎng)站經(jīng)常會用到的重復(fù)文件,減少在進(jìn)行HTTP請求時對服務(wù)器的壓力,在一定程度上會縮短頁面加載的時間;第四,通過對頁面中的圖片進(jìn)行像素、格式等的有效處理,將圖片的大小進(jìn)行裁剪,減少加載圖片的時間;第五,可以使用Ajah的異步加載,使網(wǎng)站能夠在不刷新頁面的情況下對頁面上的內(nèi)容進(jìn)行更新,在一定程度上減少用戶等待頁面加載的時間。
2.2 Web應(yīng)用系統(tǒng)中后臺程序的優(yōu)化方案
2.2.1 對Session進(jìn)行設(shè)置
在網(wǎng)站的運(yùn)行過程中,由于Web應(yīng)用系統(tǒng)中無狀態(tài)記憶的特征,因此在網(wǎng)站的請求與服務(wù)器建立起Web應(yīng)用系統(tǒng)的連接時,其狀態(tài)不能進(jìn)行共享,比如說如果一個用戶在登錄時的用戶標(biāo)識是1,在進(jìn)行密碼修改時,系統(tǒng)就不會對用戶進(jìn)行定位以獲取其信息,這是因為系統(tǒng)中的一個Session在定義變量的時候,在其生命周期內(nèi)可以使用戶訪問所有的鏈接,并且在全局變量的傳遞工作中起著重要的作用,由于Session擁有比較好的便捷性,因此許多的技術(shù)開發(fā)人員經(jīng)常會使用Session,所以在進(jìn)行高并發(fā)的訪問時,就會產(chǎn)生大量的內(nèi)存,使服務(wù)器的壓力極大地增加。要想有效解決這個問題,就需要在適當(dāng)?shù)某潭壬辖鉀Q好Session的問題,比如盡全力將Session中的信息進(jìn)行精簡,選擇將一些用戶經(jīng)常會使用到的信息儲存到該系統(tǒng)中,并且當(dāng)用戶使用后,可以有效地將一些無用信息清除,在一定程度上降低服務(wù)器內(nèi)Session所占的內(nèi)存。
2.2.2 優(yōu)化數(shù)據(jù)庫中的操作語言
在目前的關(guān)系型的數(shù)據(jù)庫當(dāng)中,要訪問數(shù)據(jù)就必須通過編寫相應(yīng)的數(shù)據(jù)庫操作語言,所以優(yōu)化數(shù)據(jù)庫中的操作語言是必然的,目前在編寫操作語言的過程中,由于每個項目的規(guī)模、數(shù)據(jù)關(guān)系等因素都不相同,所以要對這些因素進(jìn)行仔細(xì)和反復(fù)的分析,才能有效地優(yōu)化操作語言。
2.2.3 加強(qiáng)數(shù)據(jù)的分頁技術(shù)
在應(yīng)用系統(tǒng)中有效使用分頁技術(shù)可以在一定程度上減少數(shù)據(jù)庫查詢工作的工作量,因為它可以在每次都展示給用戶一個固定的數(shù)據(jù)量,來降低網(wǎng)絡(luò)在傳輸數(shù)據(jù)過程當(dāng)中的一些負(fù)荷,加強(qiáng)數(shù)據(jù)的分頁技術(shù)可以有效避免用戶因為查詢大量的數(shù)據(jù)而對網(wǎng)頁產(chǎn)生的疲倦感,提升用戶的使用體驗。
2.2.4 建立數(shù)據(jù)緩存
在系統(tǒng)的日常工作中,驗證相關(guān)的信息需要將用戶的密碼與數(shù)據(jù)庫進(jìn)行匹配,才能進(jìn)入網(wǎng)頁,這樣的工作過程會浪費很多的時間以及耗費很大的資源量,并且在如今高并發(fā)的情況下,用戶頻繁的對數(shù)據(jù)庫進(jìn)行訪問,會在很大程度上降低系統(tǒng)的性能,所以在程序與數(shù)據(jù)庫創(chuàng)立連接的中間層建立數(shù)據(jù)緩存,可以在一定程度上減少數(shù)據(jù)庫的訪問次數(shù),極大提高系統(tǒng)響應(yīng)的速度。
2.2.5 將頁面靜態(tài)化
在一個網(wǎng)頁總的展示頁面當(dāng)中,肯定會運(yùn)用很大量的數(shù)據(jù)庫的操作語言來獲取信息,但是這個操作十分的復(fù)雜,并且通過頻繁的訪問會增大服務(wù)器處理數(shù)據(jù)的壓力,使用戶的體驗感受到影響,并且系統(tǒng)的性能也會在一定程度上受到影響。所以要想改善這一局面,就可以將這類頁面進(jìn)行靜態(tài)化的處理,并且進(jìn)行靜態(tài)化的處理會使操作過程變得簡單,提高了整個頁面的運(yùn)行速度,并且不會改變頁面中原來擁有的內(nèi)容。
2.3 對Web應(yīng)用系統(tǒng)中數(shù)據(jù)庫的優(yōu)化方案
將數(shù)據(jù)庫進(jìn)行優(yōu)化可以降低數(shù)據(jù)在反應(yīng)時所花費的時間,還可以提高數(shù)據(jù)庫的吞吐量。所以對數(shù)據(jù)庫進(jìn)行優(yōu)化可以做到三個步驟:第一是創(chuàng)建索引,使用戶在查詢資料的時候能夠很快找到自己想要的信息;第二是修改系統(tǒng)中缺省的配置,讓數(shù)據(jù)庫中內(nèi)存需求能夠得到滿足;第三是將數(shù)據(jù)進(jìn)行分表儲存,減少用戶在查詢時產(chǎn)生的一些記錄條數(shù),避免一些沒有必要的訪問,在一定程度上提高系統(tǒng)的檢索速度,增加用戶的體驗。
3 結(jié) 論
隨著社會和科學(xué)技術(shù)的不斷發(fā)展,人們會在日常的生活中越來越多的使用到計算機(jī),所以面對如今高并發(fā)的情況,優(yōu)化Web應(yīng)用系統(tǒng)是必然的趨勢,通過將Web系統(tǒng)中的前端、數(shù)據(jù)庫等進(jìn)行優(yōu)化,可以有效減少人們在使用時進(jìn)行查詢的時間,提高用戶的體驗感,使其能夠更好的發(fā)展。
參考文獻(xiàn):
[1] 楊林.基于Node.Js的Web系統(tǒng)性能提高方法研究 [D].陜西:西安理工大學(xué),2016.
[2] 王戀戀.高性能Web應(yīng)用系統(tǒng)架構(gòu)研究與優(yōu)化 [D].北京:北京郵電大學(xué),2016.
[3] 王亞楠,吳華瑞,黃鋒.高并發(fā)Web應(yīng)用系統(tǒng)的性能優(yōu)化分析與研究 [J].計算機(jī)工程與設(shè)計,2014,35(8):2976-2981.
作者簡介:王偉(1978-),男,漢族,遼寧海城人,研發(fā)中心總經(jīng)理,工程師,博士研究生,研究方向:高并發(fā)分布式系統(tǒng)設(shè)計、基于Hadoop的大數(shù)據(jù)平臺設(shè)計。