如何進(jìn)行web前端性能優(yōu)化五慈?

大家好,我是IT修真院深圳分院第01期學(xué)員主穗,一枚正直純潔善良的web程序員泻拦。

今天給大家分享一下,修真院官網(wǎng)JS(職業(yè))任務(wù)5黔牵,深度思考中的知識(shí)點(diǎn)——如何進(jìn)行web前端性能優(yōu)化聪轿?

1. 背景

用戶訪問網(wǎng)頁(yè)的等待時(shí)間,有80%是發(fā)生在瀏覽器前端猾浦,特別是頁(yè)面和頁(yè)面中各種元素(圖片陆错、CSS灯抛、JavaScript、 flash…)的下載之上音瓷,因此進(jìn)行前端優(yōu)化很有必要对嚼。

2. 方法

2.1 初次訪問

1)減少一個(gè)頁(yè)面訪問所產(chǎn)生的http連接次數(shù)

--盡量簡(jiǎn)潔的頁(yè)面設(shè)計(jì),最大程度減少圖片的使用绳慎,通過放棄一些不必要的頁(yè)面特效來(lái)減少javascript的使用纵竖。

--使用一些優(yōu)化技巧,比如利用圖片的背景位移減少圖片的個(gè)數(shù)杏愤;image map技術(shù)链瓦;Sprites圖期贫;使用Inline images將css圖片捆綁到網(wǎng)頁(yè)中帝雇。

--盡量合并js和css文件绪爸,減少獨(dú)立文件個(gè)數(shù)。

2)使用gzip壓縮網(wǎng)頁(yè)內(nèi)容

使用gzip來(lái)壓縮網(wǎng)頁(yè)中的靜態(tài)內(nèi)容厕宗,能夠顯著減少用戶訪問網(wǎng)頁(yè)時(shí)的等待時(shí)間画舌。主流的web服務(wù)器都支持或提供gzip壓縮,如果使用apache服務(wù)器已慢,只需要在配置文件中開啟 mod_gzip(apache1.x)或mod_deflate(apache2.x)即可曲聂。

使用gzip壓縮都能夠顯著提高服務(wù)器效率并減少帶寬支出,注意圖片內(nèi)容本身已經(jīng)是壓縮格式了佑惠,務(wù)必不要再進(jìn)行壓縮朋腋。

3)將CSS放在頁(yè)面頂端,JS文件放在頁(yè)面底端

CSS的引用要放在html的頭部header中兢仰,JS文件引用盡量放在頁(yè)面底端標(biāo)簽的后面乍丈,主要的思路是讓核心的頁(yè)面內(nèi)容盡早顯示出來(lái)剂碴。

4)使JS文件內(nèi)容最小化

使用一些javascript壓縮工具對(duì)js腳本進(jìn)行壓縮把将,去除其中的空白字符、注釋忆矛,最小化變量名等察蹲。

5)盡量減少外部腳本的使用,減少DNS查詢時(shí)間

不要在網(wǎng)頁(yè)中引用太多的外部腳本催训,首先洽议,一次dns的解析過程會(huì)消耗20-120毫秒的時(shí)間;其次漫拭,如果在頁(yè)面中引用太多的外部文件(如各種廣告亚兄、聯(lián)盟等代碼),可能會(huì)因?yàn)橥獠课募捻憫?yīng)速度而將你的網(wǎng)站拖得很慢采驻。瀏覽器一般只能并行處理同一域名下的兩個(gè)請(qǐng)求审胚,而對(duì)于不同子的域名則不受此限制匈勋,因此適當(dāng)將本站靜態(tài)內(nèi)容(css,js)放在其他的子域名下(如 static.xxx.com)會(huì)有利于提高瀏覽器并行下載網(wǎng)頁(yè)內(nèi)容的能力。

如果必須引用外部文件膳叨,盡量將這些腳本放在頁(yè)腳洽洁,可以使用CDN加速和DNS域名解析加速。

2.2 經(jīng)常訪問

1)在header中添加過期時(shí)間(Expires Header)

在header中給靜態(tài)內(nèi)容添加一個(gè)較長(zhǎng)的過期時(shí)間菲嘴,這樣可以使用戶今后訪問只讀取緩存中的文件饿自,而不會(huì)與服務(wù)器產(chǎn)生任何的交互。

這樣做存在一些問題龄坪,當(dāng)圖片昭雌、CSS和js文件更新時(shí),用戶如果不刷新瀏覽器健田,就無(wú)法獲得此更新城豁。這樣,我們?cè)趯?duì)圖片抄课、css和js文件修改時(shí)唱星,必須要進(jìn)行重命名,才能保證用戶訪問到最新的內(nèi)容跟磨。這可能會(huì)給開發(fā)造成不小的麻煩间聊,因?yàn)檫@些文件可能被站點(diǎn)中的許多文件所引用。

flickr提出的解決辦法是通過url rewrite使不同版本號(hào)的URL抵拘,事實(shí)上指向同一個(gè)文件哎榴,因?yàn)閡rl級(jí)別的操作效率是很高的,可以給開發(fā)過程提供不少便利僵蛛。

瀏覽器訪問url時(shí)的工作機(jī)制:

--第一次訪問url時(shí)尚蝌,用戶從服務(wù)器段獲取頁(yè)面內(nèi)容,并把相關(guān)的文件(images,css,js…)放在高速緩存中充尉,也會(huì)把文件頭中的expired time,last modified, ETags等相關(guān)信息也一同保留下來(lái)飘言。

--用戶重復(fù)訪問url時(shí),瀏覽器首先看高速緩存中是否有本站同名的文件驼侠,如果有姿鸿,則檢查文件的過期時(shí)間;如果尚未過期倒源,則直接從緩存中讀取文件苛预,不再訪問服務(wù)器。

--如果緩存中文件的過期時(shí)間不存在或已超出笋熬,則瀏覽器會(huì)訪問服務(wù)器獲取文件的頭信息热某,檢查last modifed和ETags等信息,如果發(fā)現(xiàn)本地緩存中的文件在上次訪問后沒被修改,則使用本地緩存中的文件昔馋;如果修改過芜繁,則從服務(wù)器上獲取最新版本。

2)將css和js文件放在獨(dú)立外部文件中引用

將css和js文件放在獨(dú)立文件中绒极,這樣它們會(huì)被單獨(dú)緩存起來(lái)骏令,在訪問其他頁(yè)面時(shí)可以從瀏覽器的高速緩存中直接讀取。

3)去掉重復(fù)的腳本

在IE中垄提,包含重復(fù)的js腳本會(huì)導(dǎo)致瀏覽器的緩存不被使用榔袋。

4)避免重定向的發(fā)生

除了在header中人為的重定向之外,網(wǎng)頁(yè)重定向常在不經(jīng)意間發(fā)生铡俐,被重定向的內(nèi)容將不會(huì)使用瀏覽器的緩存凰兑。比如用戶在訪問www.xxx.com,服務(wù)器會(huì)通過301轉(zhuǎn)向到www.xxx.com/审丘,在后面加了一個(gè)“/”吏够。如果服務(wù)器的配置不好,這也會(huì)給服務(wù)器帶來(lái)額外的負(fù)擔(dān)滩报。通過配置apache的 alias或使用mod_rewrite模塊等方法锅知,可以避免不必要的重定向。

3.常見問題

以上

4.解決方案

以上

5.編碼實(shí)戰(zhàn)

Image Map

6.擴(kuò)展思考

幾種不常用的方式:使用CDN分發(fā)機(jī)制脓钾、避免CSS表達(dá)式售睹、避免使用ETags

7.參考文獻(xiàn)

如何優(yōu)化Web網(wǎng)站性能?

8.更多討論

鳴謝

感謝大家觀看

BY : 王蒙

PPT鏈接

視頻鏈接


web前端網(wǎng)站性能優(yōu)化_騰訊視頻

------------------------------------------------------------------------------------------------------------------------

今天的分享就到這里啦可训,歡迎大家點(diǎn)贊昌妹、轉(zhuǎn)發(fā)、留言握截、拍磚~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末飞崖,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子谨胞,更是在濱河造成了極大的恐慌固歪,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,729評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件畜眨,死亡現(xiàn)場(chǎng)離奇詭異昼牛,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)康聂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)胞四,“玉大人恬汁,你說我怎么就攤上這事」嘉埃” “怎么了氓侧?”我有些...
    開封第一講書人閱讀 169,461評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵脊另,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我约巷,道長(zhǎng)偎痛,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,135評(píng)論 1 300
  • 正文 為了忘掉前任独郎,我火速辦了婚禮踩麦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘氓癌。我一直安慰自己谓谦,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評(píng)論 6 398
  • 文/花漫 我一把揭開白布贪婉。 她就那樣靜靜地躺著反粥,像睡著了一般。 火紅的嫁衣襯著肌膚如雪疲迂。 梳的紋絲不亂的頭發(fā)上才顿,一...
    開封第一講書人閱讀 52,736評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音尤蒿,去河邊找鬼娜膘。 笑死,一個(gè)胖子當(dāng)著我的面吹牛优质,可吹牛的內(nèi)容都是我干的竣贪。 我是一名探鬼主播,決...
    沈念sama閱讀 41,179評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼巩螃,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼演怎!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起避乏,我...
    開封第一講書人閱讀 40,124評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤爷耀,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后拍皮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體歹叮,經(jīng)...
    沈念sama閱讀 46,657評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評(píng)論 3 342
  • 正文 我和宋清朗相戀三年铆帽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了咆耿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,872評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡爹橱,死狀恐怖萨螺,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤慰技,帶...
    沈念sama閱讀 36,533評(píng)論 5 351
  • 正文 年R本政府宣布椭盏,位于F島的核電站,受9級(jí)特大地震影響吻商,放射性物質(zhì)發(fā)生泄漏掏颊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評(píng)論 3 336
  • 文/蒙蒙 一艾帐、第九天 我趴在偏房一處隱蔽的房頂上張望乌叶。 院中可真熱鬧,春花似錦掩蛤、人聲如沸枉昏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)兄裂。三九已至,卻和暖如春阳藻,著一層夾襖步出監(jiān)牢的瞬間晰奖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工腥泥, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留匾南,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,304評(píng)論 3 379
  • 正文 我出身青樓蛔外,卻偏偏與公主長(zhǎng)得像蛆楞,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子夹厌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評(píng)論 2 361

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

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案豹爹? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,762評(píng)論 1 92
  • 網(wǎng)站優(yōu)化離不開前后端的互相協(xié)作,但是對(duì)于前端工程師來(lái)說矛纹,在保證后端技術(shù)方案不變時(shí)臂聋,能不能只利用前端技術(shù)來(lái)優(yōu)化網(wǎng)站呢...
    留七七閱讀 6,334評(píng)論 0 31
  • Yahoo!的Exceptional Performance團(tuán)隊(duì)為改善Web性能帶來(lái)最佳實(shí)踐。他們?yōu)榇诉M(jìn)行了一系列...
    拉風(fēng)的老衲閱讀 1,853評(píng)論 0 1
  • 性能優(yōu)化方向分類 請(qǐng)求數(shù)量: 合并腳本和樣式表或南, CSS Sprites孩等, 拆分初始化負(fù)載, 劃分主域(使用“查找...
    Www劉閱讀 1,776評(píng)論 3 8
  • 文/徐小木 2016-10-27 這個(gè)世界上有多少的重逢采够, 就會(huì)有多少的別離肄方。 這個(gè)世界有多少的歡聲笑語(yǔ), 就...
    徐小木閱讀 314評(píng)論 7 5