-
當(dāng)前位置:首頁 > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
web頁面性能優(yōu)化
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于web頁面性能優(yōu)化的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準,寫出的就越詳細,有微信小程序端、在線網(wǎng)頁版、PC客戶端
官網(wǎng):https://ai.de1919.com。
創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務(wù)客戶遍布全球各地,如需了解SEO相關(guān)業(yè)務(wù)請撥打電話175-8598-2043,或添加微信:1454722008
本文目錄:
一、web后端性能調(diào)優(yōu)主要優(yōu)化哪些東西
盡量簡潔的頁面設(shè)計,最大程度減少圖片的使用,通過放棄一些不必要的頁面特效來減少javascript的使用。
- 使用一些優(yōu)化技巧,比如利用圖片的背景位移減少圖片的個數(shù);image map技術(shù);使用Inline images將css圖片捆綁到網(wǎng)頁中。
- 盡量合并js和css文件,減少獨立文件個數(shù)。
二、高性能Web站點的優(yōu)化招數(shù)
1.這里的吞吐率特指Web服務(wù)器單位時間內(nèi)處理的請求。
2.壓力測試的前提:1>并發(fā)用戶數(shù) 2>總請求數(shù) 3>請求資源描述
3.用戶平均請求等待時間主要用戶衡量服務(wù)器在一定并發(fā)用戶數(shù)的情況下,對于單個用戶的服務(wù)器質(zhì)量;而服務(wù)器平均請求處理時間與前者相比,則用于衡量服務(wù)器的整體服務(wù)質(zhì)量,它其實就是吞吐率的倒數(shù)。
4.對http header中標記為Connection: Keep-Alive的請求,開啟web服務(wù)器的長連接支持。減少系統(tǒng)調(diào)用accept的次數(shù),即減少建立連接的開銷。
5.老調(diào)重彈,進程,內(nèi)核級線程和用戶級線程在不同情況下的優(yōu)劣。IO模型,mmap(內(nèi)村映射),直接IO,例如sendfile syscall以及異步IO等。多路IO復(fù)用(select, poll,epoll and kqueue etc)
6.服務(wù)器并發(fā)策略
1> 一個進程處理一個連接,非阻塞IO。穩(wěn)定性強,但context switch的開銷隨http request遞增而快速增長。
2> 一個內(nèi)核級線程處理一個連接,非阻塞IO,多進程多線程混合方式。Context switch的問題依然存在。理論上可以支持更多的并發(fā)連接。
3>一個進程處理多個連接,非阻塞IO。(epoll, kqueue)lighttpd, nginx。支持并發(fā)性能強勁。 上述情況的適用范圍不能一刀切,而且這里都是指單機并發(fā),需根據(jù)實際情況(實際并發(fā)數(shù))來選擇。通常,在并發(fā)用戶數(shù)較大的情況下,Web服務(wù)器使用什么樣的并發(fā)策略,是影響最大并發(fā)數(shù)的關(guān)鍵。 在實際應(yīng)用中,動態(tài)內(nèi)容緩存可能是使用得最多的技術(shù),但是并不見得所有的動態(tài)內(nèi)容都適合使用網(wǎng)頁緩存,緩存帶來的性能提升恰恰與有些動態(tài)數(shù)據(jù)實時交互的需求形成矛盾,這就是一個權(quán)衡。
1. 緩存動態(tài)生成的html代碼。
2. 把動態(tài)內(nèi)容靜態(tài)化,直接緩存整個html文件。這樣就可以直接訪問緩存。這時的更新策略:
1>在數(shù)據(jù)更新時重新生成靜態(tài)化內(nèi)容 2>定時重新生成靜態(tài)化內(nèi)容
3. 使用SSI(server side include)進行局部靜態(tài)化。但web server的SSI功能會對靜態(tài)文件的吞吐率有負面影響。 減少http請求,充分利用瀏覽器的緩存。而webapp通過http協(xié)議(更具體位置就是http header)來與瀏覽器協(xié)商,那些東東瀏覽器可以使用其緩存即可。
1. Last-Modified/If-Modified-Since
2. ETag/If-None-Match
3.Expires + Cache-Control: max-age=<seconds>
1和2需要瀏覽器和webserver交互后,有服務(wù)器端通知瀏覽器是否使用瀏覽器緩存,而3則是在過期前直接使用瀏覽器緩存,這樣就直接kill掉了http request。同時還需注意,在使用SSI的內(nèi)容中,由于整個頁面是服務(wù)器動態(tài)生成的,所以Last-Modified標記在不同的Web服務(wù)器中有不同的生成方法。 Web服務(wù)器隱藏在代理服務(wù)器之后。這種代理機制稱為反向代理(Reverse proxy),同時,實現(xiàn)這種機制的服務(wù)器便成為反向代理服務(wù)器。隱藏在反向代理服務(wù)器之后的Web服務(wù)器,我們習(xí)慣稱它為后端服務(wù)器(Back-end server),當(dāng)然,反向代理服務(wù)器就被稱為前端服務(wù)器(Front-end server)。
引入反向代理服務(wù)器的目的之一就是基于緩存的加速。我們可以將內(nèi)容緩存在反向代理服務(wù)器上,所有緩存機制的實現(xiàn)仍然采用HTTP/1.1協(xié)議。
緩存命中率和后端吞吐率的理想技術(shù)模型
緩存丟失率=(活躍內(nèi)容數(shù)/(實際吞吐率×平均緩存有效期))×100%
緩存命中率= 1-緩存丟失率 后端吞吐率= 活躍內(nèi)容數(shù)/平均緩存有效期
緩存命中率= (1-(后端吞吐率/實際吞吐率))×100%
后端吞吐率 = (1 – 緩存命中率)×實際吞吐率
結(jié)論: 1. 活躍內(nèi)容數(shù)和平均緩存有效期一定的情況下,緩存命中率與實際吞吐率成正比。
2. 實際吞吐率和平均緩存有效期一定的情況下,緩存命中率與活躍內(nèi)容數(shù)成反比。
3. 活躍內(nèi)容數(shù)和實際吞吐率一定的情況下,緩存命中率與平均緩存有效期成正比。
4. 活躍內(nèi)容數(shù)一定的情況下,后端吞吐率與平均緩存有效期成反比。
5. 平均緩存有效期一定的情況下,后端吞吐率與活躍內(nèi)容數(shù)成正比。
6. 緩存命中率的變化不一定會影響后端吞吐率。
7. 后端吞吐率的變化不一定會影響緩存命中率。
ESI – Edge Side Include類似與SSI,但不在webserver端組裝內(nèi)容,而是在http代理服務(wù)器上組裝內(nèi)容,包括反向代理。在處理只有局部更新動態(tài)內(nèi)容時AJAX是更好的原則,它不依賴與底層webserver的實現(xiàn),但ESI的優(yōu)勢在于再有多個后端服務(wù)器的情況下,變可以避免多個后端的重復(fù)組裝,減少總工作量。 從以下幾個方面來看Web組件的差異:
1. 文件大小
2. 文件數(shù)量
3. 內(nèi)容更新頻率
4. 預(yù)計并發(fā)用戶數(shù)
5. 是否需要腳本解釋器
6. 是否涉及大量CPU計算
7. 是否訪問數(shù)據(jù)庫
8. 訪問數(shù)據(jù)庫的主要操作是讀還是寫
9. 是否包含RPC
對每種類型的Web組件采取不同的優(yōu)化方式(一種或多種):
1. 是否使用epoll模型
2. 是否使用sendfile() syscall
3. 是否使用異步IO
4. 是否支持HTTP持久連接(http keep-alive)
5. 是否需要opcode緩存
6. 是否使用動態(tài)內(nèi)容緩存以及有效期為多長
7. 是否使用Web服務(wù)器緩存以及有效期為多長
8. 是否使用瀏覽器緩存以及有效期為多長
9. 是否使用反向代理緩存以及有效期為多長
10. 是否使用負載均衡策略
按照Web組件的不同類型將其放在不同的二級域名/機器/不同類型的WebServer
同時,還需考慮到不同的瀏覽器對同一個域名下的訪問有多大并發(fā)數(shù)限制,而使用多個域名。
IE6,7 2(http/1.1)
IE8 6(http/1.1)
Firefox2 2(http/1.1)
Firefox3 6(http/1.1)
發(fā)揮各自的潛力
對于動態(tài)內(nèi)容:開啟opcode緩存,使用足夠快的CPU,足夠大的內(nèi)存,多進程以及與數(shù)據(jù)庫保持高速連接
對于靜態(tài)內(nèi)容:支持epoll,非阻塞IO,異步IO,使用sendfile,單進程(對于IO密集型任務(wù),多進程無法發(fā)揮優(yōu)勢),使用高速磁盤,使用RAID
對于image, css and script分配合理設(shè)置其過期時間(expires) 1.合理的執(zhí)行計劃,包括合理使用索引
2.使用慢查詢分析工具,找出執(zhí)行很慢的sql并優(yōu)化之。
3.合理的數(shù)據(jù)庫緩存,索引緩存,數(shù)據(jù)緩存等
4.更具實際需求選擇合理的數(shù)據(jù)庫引擎或數(shù)據(jù)庫
5.反范式化設(shè)計,對查詢帶來優(yōu)化,但增加寫和更新的工作量。
6.放棄關(guān)系型數(shù)據(jù)庫,針對實際情況,讀寫要求極高時 數(shù)據(jù)庫擴展: 讀寫分離,按業(yè)務(wù)實施合理的垂直分區(qū),對熱點表進行水平分區(qū)。 DNS負載均衡
需要DNS服務(wù)商提供該功能,且DNS記錄存在緩存,無法及時修改,帶來更新延遲。
反向代理負載均衡
HTTP重定向和DNS解析在請求的調(diào)度上體現(xiàn)在“轉(zhuǎn)發(fā)”上,而其則體現(xiàn)在“轉(zhuǎn)移”。
任何對于實際服務(wù)器的http請求都必須經(jīng)過調(diào)度器;調(diào)度器必須等待實際服務(wù)器的http響應(yīng),并將它反饋給用戶。
由于調(diào)度策略在自己手中,就可以使用諸如按照權(quán)重進行調(diào)度等策略。也可以對個應(yīng)用服務(wù)器進行健康監(jiān)控,對無效服務(wù)器不在把請求轉(zhuǎn)移給它;還可以實現(xiàn)sticky sessions。
作為負載均衡調(diào)度器的反向代理服務(wù)器在擴展上的制約,反向代理服務(wù)器的處理能力制約了整個集群的處理能力,其次,容易出現(xiàn)單點故障
IP負載均衡
Netfilter+ IPVS
用iptables修改Netfilter規(guī)則,進行基于IP的tcp包轉(zhuǎn)發(fā),也即調(diào)度。 IPVS(IP Virtual Server)也成為LVS(Linux Virtual Server)。
兩者結(jié)合的具體策略有 1. LVS + NAT
2. LVS + DR
三、如何優(yōu)化web服務(wù)器的訪問速度
網(wǎng)站運營的任何時期,網(wǎng)站訪問速度都是至關(guān)重要的部分,它是網(wǎng)站友好體驗中最基本的一項,如果訪問體驗都令人不滿意,那么后期所做的營銷推廣模式都有可能徒勞無功,因為網(wǎng)絡(luò)中客戶的選擇成本很低,加上普遍客戶的耐心都不高,頁面訪問超過6秒客戶就會選擇離開,這對于一些流量本來就不高的企業(yè)網(wǎng)站來說無疑是雪上加霜。
一、升級正在使用中的服務(wù)器
進行服務(wù)器升級工作之前,要考慮多方面的問題,是升級已有的服務(wù)器還是購置新的服務(wù)器設(shè)備須根據(jù)實際情況抉擇。首先來說升級現(xiàn)有的服務(wù)器設(shè)備,一般來說網(wǎng)站運營到后期隨著業(yè)務(wù)不斷增加,多平臺應(yīng)用的開發(fā)對于服務(wù)器性能的要求也逐步提升,長而久之服務(wù)器遇到性能瓶頸也是情理之中的事情,對于這種情況,我們可以通過升級服務(wù)器(例如增加硬件設(shè)備或網(wǎng)絡(luò)帶寬)等相關(guān)配置來滿足不斷擴大的業(yè)務(wù)需求,那么服務(wù)器性能瓶頸問題就可以得到解決。
二、優(yōu)化正在使用的服務(wù)器
不管是完成升級后的服務(wù)器,還是新購置的服務(wù)器,我們都要對其進行優(yōu)化,從而提升服務(wù)器的性能以及利用率。如何優(yōu)化服務(wù)器?作為在國互網(wǎng)工作到現(xiàn)在的資深I(lǐng)DC工作人員,小編認為大概分為以下四個方面
要點一:盡可能的減少HTTP請求數(shù)
從客戶訪問網(wǎng)站頁面到整個頁面內(nèi)容完全展現(xiàn)出來,這其中要花費較多的時間來下載各種Scripts、CSS樣式表、Flash以及圖片,而每一類下載都相當(dāng)于一次HTTP請求,這樣的請求越多網(wǎng)站被完全加載出來所花的時間會越長,意味著客戶端的訪問會很慢,那么此時就需要盡可能的減少HTTP請求數(shù),通常我們可以直接把css和js寫入到頁面中,避免了外部的調(diào)用;或者我們可以把CSS文件和JS文件分來,在后臺再進行合并,這樣客戶端瀏覽器相當(dāng)于一次請求。這是小編在國互網(wǎng)美女前端那學(xué)來的。
要點二:降低DNS查詢時間
眾所周知網(wǎng)絡(luò)服務(wù)器端的域名和IP地址是相互對應(yīng)的,當(dāng)客戶端發(fā)出請求時,計算機還需要通過域名和IP地址的相互轉(zhuǎn)換來判斷,而這個轉(zhuǎn)換工作便是域名解析DNS,通常DNS的查詢需要10~20毫秒時間,客戶端瀏覽器也只會等待DNS查詢結(jié)束之后才會加載此域名下的內(nèi)容。因此,我們要加快頁面的訪問速度,就可以從降低DNS查詢時間方面去做改善。
要點三:啟用服務(wù)器Gzip壓縮功能
對于大中型網(wǎng)站來說,頁面的內(nèi)容多且比較多樣化,單個頁面的大小可能是幾百K以上了,客戶端訪問的時候下載會比較慢,此時我們可以采用服務(wù)器Gzip頁面壓縮功能,可以將一個大小為100K的頁面文件壓縮成25K以下,這樣就可以減少網(wǎng)絡(luò)傳輸?shù)臄?shù)量從而提高客戶端訪問速度。一般服務(wù)器都是可以使用Gzip壓縮功能的,并且能夠針對JS文件、CSS文件和Html進行壓縮,多方面去進行優(yōu)化網(wǎng)站訪問速度。
要點四:推薦大中型網(wǎng)站使用CDN加速工具
CDN加速是目前大型網(wǎng)站普遍使用的頁面加速方式,它對于網(wǎng)站優(yōu)化幾乎沒有影響的,基本原理是將網(wǎng)站鏡像備份到很多服務(wù)器節(jié)點上,使服務(wù)器節(jié)點周圍的用戶訪問速度更快,從而提升客戶端高速訪問網(wǎng)站的體驗;但是并不是所有的網(wǎng)站都適合使用CDN加速,一般對于小規(guī)模站點個人站的話,就不需要使用CDN加速,畢竟從長期來看這可是一筆不小的開支;建議圖片站以及多媒體站點可使用CDN加速。
希望以上知識能夠幫到您
四、如何進行web前端性能優(yōu)化
1,css精靈!
2,代碼壓縮
3,高質(zhì)量的JS代碼肯定能省很多事!封裝JS,重復(fù)調(diào)用方法!這樣會減少很多操作
4,請減少對DOM的操作
5,使用JSON格式來進行數(shù)據(jù)交換
6,高效使用HTML標簽和CSS樣式
7,使用CDN加速(內(nèi)容分發(fā)網(wǎng)絡(luò))
8,精簡CSS和JS文件
9,注意控制Cookie大小和污染
以上就是關(guān)于web頁面性能優(yōu)化相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。
推薦閱讀:
Windows11網(wǎng)頁版html源碼(web網(wǎng)頁源代碼)
包裝新技術(shù)新材料(包裝新技術(shù)新材料有哪些)
杭州臨江高新技術(shù)產(chǎn)業(yè)開發(fā)區(qū)(杭州臨江高新技術(shù)產(chǎn)業(yè)開發(fā)區(qū)管理委員會主任)