前端性能優(yōu)化-將CSS文件放在頂部

原創(chuàng)作品,請勿抄襲月帝,翻版必究躏惋。轉(zhuǎn)載請注明作者。

簡介

在web頁面設計中嚷辅,一般在HTML中不直接寫樣式簿姨,而是通過link標簽引用一個CSS文件。在下載頁面過程中簸搞,document最早開始下載扁位,然后瀏覽器解析document,下載相關(guān)的css趁俊、js域仇、圖片、字體寺擂、視頻等資源暇务。css文件放置在head中和放在body底部泼掠,對css的下載時間不會有影響,但是對頁面的呈現(xiàn)有著非常大的影響垦细,與用戶的體驗密切相關(guān)择镇。

下面我們還是來看看天貓網(wǎng)站上的情況:

從天貓的首頁可以看出5個CSS文件全部都放在了head中。同樣括改,不僅僅只是在天貓如此腻豌,在國內(nèi)技術(shù)前沿的大型網(wǎng)站中,都是如此嘱能。

CSS文件放置在頂部的原理

CSS文件放在頂部一方面是因為放置順序決定了下載的優(yōu)先級吝梅,更關(guān)鍵的是瀏覽器的渲染機制。最理想的情況焰檩,我們希望瀏覽器逐漸的渲染下載好的CSS憔涉,將頁面逐漸的展現(xiàn)給用戶。但是瀏覽器為了避免樣式變化時重新渲染繪制頁面元素析苫,會阻塞內(nèi)容逐步呈現(xiàn),瀏覽器等待所有樣式加載完成之后才一次性渲染呈現(xiàn)頁面穿扳。如此衩侥,CSS文件如果放置底部,瀏覽器阻止內(nèi)容逐步呈現(xiàn)矛物,瀏覽器在等待最后一個css文件下載完成的過程中茫死,就出現(xiàn)了“白屏”(新打開連接時為白屏,爾后先出現(xiàn)文字履羞,圖片峦萎,樣式最后出現(xiàn))。這點非常嚴重忆首,因為在網(wǎng)速非常慢的情況下爱榔,css下載時間比較長,這樣就給用戶帶來“白屏”的時間自然也就很長了糙及,用戶體驗非常差详幽。

實際測試

為了延遲我本地環(huán)境的網(wǎng)速,我使用了Fiddler Web Debugger來模擬網(wǎng)速很慢的情況浸锨。打開Rules->Performance-Simulate Modems Speed就是啟用了網(wǎng)速延遲模擬唇聘,調(diào)節(jié)網(wǎng)速打開Rules->Customize Rules會打開一個js腳本,修改184行和186行調(diào)節(jié)網(wǎng)速柱搜。詳細的Fiddler使用可參考這篇博客迟郎。


在我的例子中,頂部一個css文件聪蘸,底部非常多的js文件宪肖,最后一個css文件表制,如下圖所示。bootstrap.css啟的作用是將圖片水平居中匈庭,oneui.min-1.5.css在頁面中啟的作用僅僅是將圖片垂直居中夫凸。

測試demo


放置在底部的情況1

在9.38秒時頂部一個樣式文件和圖片已經(jīng)加載完畢(網(wǎng)站一出現(xiàn)內(nèi)容我馬上截圖,誤差不超過0.5秒阱持,圖中也可以看出圖片還在渲染ing)夭拌。


放在底部的情況2

在15秒不到時,oneui.min-1.5.css已經(jīng)下載完畢衷咽,但卻在32秒處鸽扁,圖片才垂直居中(一居中我馬上截圖,誤差不超過0.5秒)镶骗。

上面可以看出放置頂部的樣式無需等待其他css桶现,js文件下載完才進行渲染。放置底部的樣式負責的頁面渲染需要等待其他所有js鼎姊,css下載完畢才進行骡和。

再做兩個實驗,一個是全部優(yōu)先放在頂部相寇,一個是全部放在最尾部慰于。


全部放在最頂部的情況

全部css放在頂部的情況,在15秒左右(同樣唤衫,我在頁面一出現(xiàn)時馬上截圖婆赠,誤差不超過0.5秒),頁面就全部渲染完畢佳励;


全部放在尾部在1.07秒時的情況


全部放在最尾部的情況

全部css放在尾部的情況休里,在27秒左右(同樣,我在頁面一出現(xiàn)時馬上截圖赃承,誤差不超過0.5秒)妙黍,頁面就全部渲染完畢;

上面可以看出css放在頂部楣导,頁面渲染的就快一些废境。放在尾部,就要等待所有css筒繁,js加載完成以后才能進行渲染噩凹。建議開發(fā)人員都參照此CSS文件放置頭部的規(guī)范。前端的性能優(yōu)化必須對這些細節(jié)非常注意毡咏,變量引起質(zhì)變驮宴,如果每個地方你都極盡最佳性能,你開發(fā)出來的網(wǎng)站性能將會尤其突出呕缭。

我會不斷的推出前端性能優(yōu)化的各種方法(每周一至二篇文章)堵泽,站在巨人的肩膀上修己,加上我個人的親自測試和研究,用圖文并茂的方式向大家介紹迎罗。請大家關(guān)注我睬愤。

第一篇,前端性能重要性

第二篇纹安,前端性能優(yōu)化-HTTP添加Expires頭

第三篇尤辱,前端性能優(yōu)化-對HTTP傳輸進行壓縮

第四篇,前端性能優(yōu)化-將CSS文件放在頂部

第五篇厢岂,前端性能優(yōu)化-將Scripts放在底部

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末光督,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子塔粒,更是在濱河造成了極大的恐慌结借,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卒茬,死亡現(xiàn)場離奇詭異船老,居然都是意外死亡,警方通過查閱死者的電腦和手機圃酵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門努隙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人辜昵,你說我怎么就攤上這事⊙矢” “怎么了堪置?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長张惹。 經(jīng)常有香客問我舀锨,道長,這世上最難降的妖魔是什么宛逗? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任坎匿,我火速辦了婚禮,結(jié)果婚禮上雷激,老公的妹妹穿的比我還像新娘替蔬。我一直安慰自己,他們只是感情好屎暇,可當我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布承桥。 她就那樣靜靜地躺著,像睡著了一般根悼。 火紅的嫁衣襯著肌膚如雪凶异。 梳的紋絲不亂的頭發(fā)上蜀撑,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天,我揣著相機與錄音剩彬,去河邊找鬼酷麦。 笑死,一個胖子當著我的面吹牛喉恋,可吹牛的內(nèi)容都是我干的沃饶。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼瀑晒,長吁一口氣:“原來是場噩夢啊……” “哼绍坝!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起苔悦,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤轩褐,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后玖详,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體把介,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年蟋座,在試婚紗的時候發(fā)現(xiàn)自己被綠了拗踢。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡向臀,死狀恐怖巢墅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情券膀,我是刑警寧澤君纫,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站芹彬,受9級特大地震影響蓄髓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜舒帮,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一会喝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧玩郊,春花似錦肢执、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至临庇,卻和暖如春反璃,著一層夾襖步出監(jiān)牢的瞬間昵慌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工淮蜈, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留斋攀,地道東北人。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓梧田,卻偏偏與公主長得像淳蔼,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子裁眯,可洞房花燭夜當晚...
    茶點故事閱讀 43,514評論 2 348

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