web性能優(yōu)化

1.減少http請求數(shù)量

到終端用戶的響應(yīng)時間80%花在前端:大部分用于下載組件(js/css/image/flash等等)。減少組件數(shù)就是減少渲染頁面所需的http請求數(shù)瓢姻。

減少組件數(shù)的一個方法就是簡化頁面設(shè)計祝蝠。保持富內(nèi)容的頁面且能減少http請求,可以從以下幾點實現(xiàn):

①幻碱,合并文件绎狭,如合并js,合并css都能減少請求數(shù)(用webpack打包)褥傍。

②儡嘶,雪碧圖可以合并多個背景圖片,通過background-image?和?background-position?來顯示不同部分恍风。

2社付,減少DNS查詢

就像電話簿承疲,你在瀏覽器地址欄輸入網(wǎng)址,通過DNS查詢得到網(wǎng)站真實IP鸥咖。

DNS查詢被緩存來提高性能燕鸽。這種緩存可能發(fā)生在特定的緩存服務(wù)器,或者用戶的計算機啼辣。DNS信息留存在操作系統(tǒng)DNS緩存中啊研,大多瀏覽器有自己的緩存,獨立于操作系統(tǒng)緩存鸥拧。只要瀏覽器在自己的緩存里有某條DNS記錄党远,它就不會向操作系統(tǒng)發(fā)DNS解析請求。

當客戶端的DNS緩存是空的富弦,DNS查找次數(shù)等于頁面中的唯一域名數(shù)沟娱。

所以:

由于DNS查找是需要時間的,而且它們通常都是只緩存一定的時間腕柜,所以應(yīng)該盡可能地減少DNS查找的次數(shù)济似。

減少DNS查找次數(shù),最理想的方法就是將所有的內(nèi)容資源都放在同一個域(Domain)下面盏缤,這樣訪問整個網(wǎng)站就只需要進行一次DNS查找砰蠢,這樣可以提高性能。

但理想總歸是理想唉铜,上面的理想做法會帶來另外一個問題台舱,就是由于這些資源都在同一個域,而瀏覽器針對每個域只有一定數(shù)量的并行度(不同瀏覽器并行數(shù)量不同)潭流,那么就會出現(xiàn)下載資源時的排隊現(xiàn)象竞惋,這樣就會降低性能。

如果想減少dns查詢灰嫉,當同源資源過多就會出現(xiàn)下載資源排隊碰声,想不排隊就又得增加DNS請求。

所以熬甫,折中的做法是:建議在一個網(wǎng)站里面使用至少2個域,但不多于4個域來提供資源蔓罚。我認為這條建議是很合理的椿肩,也值得我們在項目實踐中去應(yīng)用

3.使用CDN

CDN是一群不同地點的服務(wù)器,可以更高效地分發(fā)內(nèi)容到用戶豺谈。一些大公司有自己的CDN郑象。

用戶離你的服務(wù)器越近,響應(yīng)時間越少茬末,因此使用CDN厂榛,用戶可以以最短的路徑盖矫,最快的速度對網(wǎng)站進行訪問。因此击奶,CDN可以加速用戶訪問速度辈双,減少源站中心負載壓力。

4.HTTP緩存

緩存是一種保存資源副本并在下次請求時直接使用該副本的技術(shù)柜砾。當 web 緩存發(fā)現(xiàn)請求的資源已經(jīng)被存儲湃望,它會攔截請求,返回該資源的拷貝痰驱,而不會去源服務(wù)器重新下載证芭。這樣帶來的好處有:緩解服務(wù)器端壓力,提升性能(獲取資源的耗時更短了)担映。對于網(wǎng)站來說废士,緩存是達到高性能的重要組成部分。緩存需要合理配置蝇完,因為并不是所有資源都是永久不變的:重要的是對一個資源的緩存應(yīng)截止到其下一次發(fā)生改變(即不能緩存過期的資源)官硝。

服務(wù)器可以通過設(shè)置Cache-Control或ETag頭,來實現(xiàn)緩存四敞。

關(guān)于cache-cotrole ETag

5.Cookie

http cookie的使用有多種原因泛源,比如授權(quán)和個性化。cookie的信息通過http頭部在瀏覽器和服務(wù)器端交換忿危。也就是說每次請求與響應(yīng)都會帶上cookie达箍,盡可能減小cookie的大小來降低響應(yīng)時間。

①铺厨,消除不必要的cookie缎玫。

②,盡可能減小cookie的大小來降低響應(yīng)時間解滓。

③赃磨,注意設(shè)置cookie到合適的域名級別,則其它子域名不會被影響洼裤。

④邻辉,正確設(shè)置Expires日期。早一點的Expires日期或者沒有會盡早刪除cookie腮鞍,優(yōu)化響應(yīng)時間值骇。

6.HTML文檔順序

①<link>標簽放在<head>,這樣瀏覽器就會更早得到css樣式移国,可以加快頁面樣式的渲染吱瘩。當我們將css放在底部,頁面可以正常逐步呈現(xiàn)迹缀,但在css下載并解析完畢之后使碾,已經(jīng)呈現(xiàn)的文字和圖片就要用新的樣式重繪了蜜徽,這就是“無樣式內(nèi)容的閃爍”,這將是一種不好的用戶體驗票摇。

②<script>標簽放在底部拘鞋,腳本引起的問題是它們阻塞了并行下載,當腳本在下載,瀏覽器不會再下載其它組件兄朋,即使在不同域名下掐禁。

7.壓縮代碼

壓縮JS和CSS。

壓縮就是刪除代碼中不必要的字符來減小文件大小颅和,從而提高加載速度傅事。當代碼壓縮時,注釋刪除峡扩,不需要的空格(空白蹭越,換行,tab)也被刪除教届。

8.優(yōu)化圖片

檢查gif圖片的調(diào)色板大小是否匹配圖片顏色數(shù)响鹃。

可以把gif轉(zhuǎn)成png看看有沒有變小。除了動畫案训,gif一般可以轉(zhuǎn)成png8买置。

運行pngcrush或其它工具壓縮png。

運行jpegtran或其它工具壓縮jpeg强霎。

不要在html中縮放圖片忿项,不要因為你可以設(shè)置圖片的寬高就去用比你需要的大得多的圖片,根據(jù)需求使用匹配尺寸的圖片

PS:避免空src的圖片城舞,以避免不必要的請求轩触。

9.gZip

傳輸時用gzip等壓縮組件。

我們壓縮文件的目的就是為了把傳輸文件的體積減小家夺,加快傳輸速度脱柱。我們在?http?傳輸中開啟?gZip的目的也是如此

在?http/1.0?協(xié)議中關(guān)于服務(wù)端發(fā)送的數(shù)據(jù)可以配置一個?Content-Encoding?字段,這個字段用于說明數(shù)據(jù)的壓縮方法

response

客戶端在接收到返回的數(shù)據(jù)后去檢查對應(yīng)字段的信息拉馋,然后根據(jù)對應(yīng)的格式去做相應(yīng)的解碼榨为。客戶端在請求時煌茴,可以用?Accept-Encoding?字段說明自己接受哪些壓縮方法随闺。

request

gzip一般可減小響應(yīng)的70%。盡可能去gzip更多(文本)類型的文件景馁。html,腳本逗鸣,樣式合住,xml和json等等都應(yīng)該被gzip绰精,而圖片,pdf等等不應(yīng)該被gzip透葛,因為它們本身已被壓縮過笨使,gzip它們只是浪費cpu,甚至增加文件大小僚害。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末硫椰,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子萨蚕,更是在濱河造成了極大的恐慌靶草,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件岳遥,死亡現(xiàn)場離奇詭異奕翔,居然都是意外死亡,警方通過查閱死者的電腦和手機浩蓉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進店門派继,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人捻艳,你說我怎么就攤上這事驾窟。” “怎么了认轨?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵绅络,是天一觀的道長。 經(jīng)常有香客問我好渠,道長昨稼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任拳锚,我火速辦了婚禮假栓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘霍掺。我一直安慰自己匾荆,他們只是感情好,可當我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布杆烁。 她就那樣靜靜地躺著牙丽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪兔魂。 梳的紋絲不亂的頭發(fā)上烤芦,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天,我揣著相機與錄音析校,去河邊找鬼构罗。 笑死铜涉,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的遂唧。 我是一名探鬼主播芙代,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼盖彭!你這毒婦竟也來了纹烹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤召边,失蹤者是張志新(化名)和其女友劉穎铺呵,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掌实,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡陪蜻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了贱鼻。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宴卖。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖邻悬,靈堂內(nèi)的尸體忽然破棺而出症昏,到底是詐尸還是另有隱情,我是刑警寧澤父丰,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布肝谭,位于F島的核電站,受9級特大地震影響蛾扇,放射性物質(zhì)發(fā)生泄漏攘烛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一镀首、第九天 我趴在偏房一處隱蔽的房頂上張望坟漱。 院中可真熱鬧,春花似錦更哄、人聲如沸芋齿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽觅捆。三九已至,卻和暖如春麻敌,著一層夾襖步出監(jiān)牢的瞬間栅炒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留赢赊,地道東北人棒呛。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像域携,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子鱼喉,可洞房花燭夜當晚...
    茶點故事閱讀 45,585評論 2 359

推薦閱讀更多精彩內(nèi)容