web前端優(yōu)化

因?yàn)閯e人的推薦粱哼,所以看了《高性能網(wǎng)站建設(shè)指南》,之前一直想好好做個總結(jié)檩咱,但是拖延癥有點(diǎn)嚴(yán)重揭措,過兩天可能會有一個轉(zhuǎn)正面試,正好好好總結(jié)下刻蚯。

《高性能網(wǎng)站建設(shè)指南》結(jié)合Web2.0以來Web開發(fā)領(lǐng)域的最新形勢和特點(diǎn)绊含,介紹了網(wǎng)站性能問題的現(xiàn)狀、產(chǎn)生的原因炊汹,以及改善或解決性能問題的原則躬充、技術(shù)技巧和最佳實(shí)踐。全面涵蓋了前端性能問題的方方面面讨便。在本書中充甚,作者給出了14條具體的優(yōu)化原則,每一條原則都配以范例佐證伴找,并提供了在線支持废菱。

前端性能的重要性

性能黃金法則:

只有10%20%的最終用戶響應(yīng)時(shí)間花在了下載HTML文檔上,其余的80%90%的時(shí)間花在了下載頁面中的所有組件上衰倦。

所以樊零,如果希望能夠有效地減少頁面的響應(yīng)時(shí)間孽文,進(jìn)而提高網(wǎng)站整體的性能十性,就必須把關(guān)注點(diǎn)放在這80%90%中劲适。如果我們可以將后端響應(yīng)時(shí)間縮短一半厢蒜,整體響應(yīng)時(shí)間只能減少5%10%斑鸦,而如果關(guān)注前端性能,同樣是減少一半響應(yīng)時(shí)間固以,那么整體的響應(yīng)時(shí)間可以減少40%~50%嘱巾,這絕對是一個巨大的提升旬昭。

規(guī)則一:減少HTTP請求

減少了HTTP請求,不管用戶是在第一次訪問還是后續(xù)瀏覽遍略,響應(yīng)時(shí)間都會有顯著的減少骤坐。主要使用的方法有:圖片地圖纽绍,CSS Sprites,內(nèi)聯(lián)圖片和腳本腔彰,樣式表的合并辖佣。
其實(shí)簡單要說就是把能包在一起的東西全部都包在一起就好了搓逾。
1、圖片地圖世蔗,就是把頁面上用到的多個圖片合并成一張圖片,利用map控制顯示的位置顶滩,接著在這張圖片上關(guān)聯(lián)多個URL寸爆,加載的時(shí)候就只要發(fā)送一次HTTP請求獲取這張圖片就行了。
2赁豆、CSS Sprites合并圖片,減少HTTP請求
3析二、內(nèi)聯(lián)圖片节预。瀏覽器不會緩存這種圖像安拟。dataurl節(jié)省了HTTP請求,但是如果這個圖像在網(wǎng)頁多個地方顯示會加大網(wǎng)頁的內(nèi)容,延長下載時(shí)間柱衔。還有一點(diǎn)IE8以下都不支持這種圖像,所以一般不用愉棱。
4、合并腳本和樣式表艾岂,盡量減少js和css的請求數(shù)量

規(guī)則二:使用內(nèi)容發(fā)布網(wǎng)絡(luò)

內(nèi)容發(fā)布網(wǎng)絡(luò)(content delivery network)是一組分布在多個不同地理位置的Web服務(wù)器王浴,用于更加有效地向用戶發(fā)布內(nèi)容梅猿。就是可以使用cdn,租用或者自建都可以钞啸,不僅可以縮短響應(yīng)時(shí)間体斩,還可以緩和Web流量峰值壓力,而且還有提供其他服務(wù)弧烤,自行百度吧蹬敲。
CDN發(fā)布的內(nèi)容主要是靜態(tài)內(nèi)容,如圖片话浇、腳本闹究、樣式表和Flash。主要是靜態(tài)內(nèi)容更容易存儲且具有較少的依賴性赏寇。

規(guī)則三:添加Expires頭

這個規(guī)則主要是針對緩存的价认,使用緩存來減少加載組件的數(shù)量,不是針對首次訪問的優(yōu)化渠退,但是對于多次瀏覽的響應(yīng)時(shí)間的優(yōu)化還是巨大的脐彩。通過使用一個長久的Expires頭,可以使需要緩存的組件被緩存梅誓,這會在后續(xù)的頁面瀏覽中避免不必要的HTTP請求佛南。

Expires: Mon, 15 Apr 2024 20:20:20 GMT

這是一個有效期非常長久的Expires頭嗅回,它告訴瀏覽器該響應(yīng)的有效期持續(xù)到2024年4月15日為止。如果為頁面中的一個圖片返回了這個頭妈拌,瀏覽器在后續(xù)的頁面瀏覽中會使用緩存的圖片蓬蝶。
Expires存在限制,要求服務(wù)器和客戶端的時(shí)間嚴(yán)格同步培愁,過期日期需要檢查,并提供新日期谍咆,所以還有另外一種選擇私股,cache-control使用max-age指令指定用戶被緩存多久,達(dá)到的效果也是一樣的供嚎。
作為一個比較low的前端開發(fā)克滴,雖然可以看懂其中的邏輯优床,但是講真,我之前完全沒有聽過這個詞着帽,看完之后也還不是很懂得怎么把這個付諸實(shí)踐移层,然而這并不影響這個的規(guī)則的有效性幽钢。

規(guī)則四:壓縮組件

這個其實(shí)沒有什么好解釋的,就是啟用Gzip壓縮匪燕,壓縮文檔帽驯、腳本、樣式表利凑,傳輸?shù)拇笮∽冃×耍憫?yīng)時(shí)間自然就減少了牌借。

規(guī)則五:將樣式表放在頂部

規(guī)則六:將腳本放在底部

在下載腳本時(shí)瀏覽器會阻塞并行下載,如果放在上面的話有可能要等到頁面加載完成才能看到界面的整體效果膨报,這對用戶體驗(yàn)是很差的现柠。

規(guī)則七:避免CSS表達(dá)式弛矛。

表達(dá)式的問題在于對其進(jìn)行的求值,它們不只在頁面呈現(xiàn)和大小改變時(shí)求值周循,當(dāng)頁面滾動鱼鼓、甚至用戶鼠標(biāo)在頁面上移過時(shí)都要被求值。所以對頁面的性能影響是很大的迄本。
CSS3提供了calc()函數(shù)课竣,可以用來實(shí)現(xiàn)css的一些求值運(yùn)算。

規(guī)則八:使用外部的JS和CSS

因?yàn)橥獠康腏S和CSS是可以被緩存的公条,而如果是內(nèi)聯(lián)的話就要每次都要加載迂曲。

規(guī)則九:減少DNS查找

方法:通過使用Keep-Alive和較少的域名來減少DNS查找

其他

  • 規(guī)則十路捧、精簡JS,相當(dāng)于壓縮队寇,且會除去注釋及空格
  • 規(guī)則十一章姓、避免重定向。重定向會延遲整個HTML文檔的傳輸
  • 規(guī)則十二零渐、移除重復(fù)腳本
  • 規(guī)則十三相恃、配置或移除Etag
  • 規(guī)則十四笨觅、使用Ajax可緩存。確保ajax請求遵守性能指導(dǎo)杀糯,尤其應(yīng)具有長久的expires頭
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末固翰,一起剝皮案震驚了整個濱河市骂际,隨后出現(xiàn)的幾起案子冈欢,更是在濱河造成了極大的恐慌凑耻,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件类缤,死亡現(xiàn)場離奇詭異餐弱,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)来累,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門艺糜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來剧董,“玉大人翅楼,你說我怎么就攤上這事毅臊。” “怎么了皂林?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵蚯撩,是天一觀的道長。 經(jīng)常有香客問我沟启,道長德迹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮流酬,結(jié)果婚禮上芽腾,老公的妹妹穿的比我還像新娘页衙。我一直安慰自己摊滔,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布店乐。 她就那樣靜靜地躺著艰躺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪眨八。 梳的紋絲不亂的頭發(fā)上腺兴,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天,我揣著相機(jī)與錄音廉侧,去河邊找鬼页响。 笑死篓足,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的闰蚕。 我是一名探鬼主播栈拖,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼没陡!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起锻弓,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤妓盲,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后筋粗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡督赤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年没卸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了尘奏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡魄健,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出析恋,到底是詐尸還是另有隱情筑凫,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站瓦盛,受9級特大地震影響处窥,放射性物質(zhì)發(fā)生泄漏俄讹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一跃捣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧娶聘,春花似錦宦焦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽烙如。三九已至蝇刀,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間施蜜,已是汗流浹背缸沃。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工哄芜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留失晴,地道東北人胯陋。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓制轰,卻偏偏與公主長得像调俘,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評論 2 354

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

  • Yahoo!的Exceptional Performance團(tuán)隊(duì)為改善Web性能帶來最佳實(shí)踐右犹。他們?yōu)榇诉M(jìn)行了一系列...
    拉風(fēng)的老衲閱讀 1,848評論 0 1
  • 網(wǎng)站優(yōu)化離不開前后端的互相協(xié)作念链,但是對于前端工程師來說君编,在保證后端技術(shù)方案不變時(shí),能不能只利用前端技術(shù)來優(yōu)化網(wǎng)站呢...
    留七七閱讀 6,322評論 0 31
  • 一、Web前端優(yōu)化最佳實(shí)踐之 內(nèi)容 1. 盡量減少HTTP請求降瞳; 合并文件,比如把多個css文件合成一個;CSS ...
    LiLi原上草閱讀 539評論 0 3
  • 一、Web前端優(yōu)化最佳實(shí)踐之 內(nèi)容 盡量減少HTTP請求; 合并文件,比如把多個css文件合成一個雹熬;CSS Spr...
    LaBaby_閱讀 434評論 0 3
  • 愿意深埋 卻被好奇揭開 悸動是透過玻璃的光 溫和柔美 烙在心底 在另一個他(她)不知道的世界宣泄 駐足 停留 止步...
    用戶eiuyhrnjdt閱讀 269評論 0 1