令人驚訝的是,即使現(xiàn)在,你也可以訪(fǎng)問(wèn)已建立組織的主頁(yè),但如果開(kāi)發(fā)人員和設(shè)計(jì)人員知道將故障排除工作的重點(diǎn)放在哪里,則可以輕松解決這些嚴(yán)重的網(wǎng)站性能問(wèn)題。如果你對(duì)網(wǎng)站性能問(wèn)題感興趣,可以報(bào)名參加Web前端培訓(xùn),通過(guò)系統(tǒng)全面的學(xué)習(xí)和專(zhuān)業(yè)老師的面授指導(dǎo)教學(xué),你可以獲得快速進(jìn)步。
在大多數(shù)情況下,當(dāng)今互聯(lián)網(wǎng)上遇到的最大網(wǎng)站性能問(wèn)題通常歸結(jié)為以下三個(gè)問(wèn)題的某種組合。
1. 頁(yè)面權(quán)重過(guò)大
你的網(wǎng)站發(fā)送給客戶(hù)端的數(shù)據(jù)越少,頁(yè)面加載速度就越快。隨著高速互聯(lián)網(wǎng)連接成為常態(tài),這個(gè)網(wǎng)站性能問(wèn)題不再是一個(gè)問(wèn)題,但仍有很多地方無(wú)法依賴(lài)快速數(shù)據(jù)連接。
有時(shí),頁(yè)面重量問(wèn)題可以很容易地解決。設(shè)計(jì)師喜歡高分辨率的 PNG 圖像,但切換到輕度壓縮的 JPEG
圖像可以將圖像文件的大小減少 30%。你還可以將視頻文件的大小從 1080p 縮小到 720 并看到類(lèi)似的影響,但會(huì)損害用戶(hù)體驗(yàn)。
此網(wǎng)站性能問(wèn)題的另一個(gè)簡(jiǎn)單解決方法是停止調(diào)整大圖像的大小。這個(gè)問(wèn)題在響應(yīng)式網(wǎng)站上尤其常見(jiàn)。例如,移動(dòng)端渲染使用 800
像素寬的主圖,并從桌面渲染調(diào)整 2048
像素寬的圖像,這將極大地影響頁(yè)面重量和頁(yè)面加載速度。不要調(diào)整圖像大小,而是從一開(kāi)始就使用適當(dāng)大小的圖像。
2. 急切地加載 Javascript
Javascript 代表了可以輕松修復(fù)的網(wǎng)站性能問(wèn)題的另一個(gè)常見(jiàn)來(lái)源。許多頁(yè)面將外部 Javascript
文件的引用放在頁(yè)面頂部,通常在 HTML <HEAD>
元素中,這是一個(gè)不好的做法。想學(xué)習(xí)Javascript的同學(xué),可以參加Web前端培訓(xùn),可以在短時(shí)間內(nèi)學(xué)有所成,讓你更高效地學(xué)會(huì)使用這門(mén)語(yǔ)言。
瀏覽器可以維持的傳出連接數(shù)量是有限的。如果頭部引用了五個(gè)或六個(gè) Javascript
文件,則會(huì)阻止五六個(gè)其他資源的下載。此外,他們阻止的資源很可能是 CSS 文件和圖像,它們會(huì)在首屏呈現(xiàn),這嚴(yán)重?fù)p害了網(wǎng)站的速度指數(shù)。
你可以通過(guò)將 HTML 頁(yè)面頂部的腳本標(biāo)簽移動(dòng)到底部來(lái)簡(jiǎn)單地解決此網(wǎng)站性能問(wèn)題?;蛘?,可以使用 defer 屬性修飾
<script> 標(biāo)簽以延遲加載,直到所有其他資源都被渲染。但是,如果現(xiàn)有網(wǎng)站是由假定 Javascript
會(huì)急切加載的開(kāi)發(fā)人員編寫(xiě)的,那么這一舉措也會(huì)對(duì)現(xiàn)有網(wǎng)站產(chǎn)生負(fù)面影響。
如果開(kāi)發(fā)人員將 jQuery 或 Handlebars 引用放在 HTML 頁(yè)面的正文中,并且這些 Javascript
片段不在下載所有外部 Javascript 文件后觸發(fā)的 onReady
事件中,則會(huì)發(fā)生運(yùn)行時(shí)錯(cuò)誤,并且網(wǎng)站將無(wú)法正常運(yùn)行。這只是為什么網(wǎng)站性能優(yōu)化應(yīng)該是整個(gè)開(kāi)發(fā)過(guò)程中的重中之重而不是事后考慮的另一個(gè)原因。
3. 在大型 DOM 上過(guò)度使用 CSS 選擇器
所有現(xiàn)代網(wǎng)站都使用 CSS 進(jìn)行樣式設(shè)置。然而,設(shè)計(jì)師通常會(huì)將整個(gè)網(wǎng)站的所有樣式放在一個(gè) CSS 文件中。因此,CSS
文件會(huì)增長(zhǎng)。一個(gè)網(wǎng)站列出超過(guò) 1,000 種樣式的情況并不少見(jiàn),即使任何給定的頁(yè)面實(shí)際上可能只需要 40 或 50
個(gè)。在Web前端培訓(xùn)中,不僅有理論知識(shí)和學(xué)習(xí),還有企業(yè)級(jí)實(shí)戰(zhàn)項(xiàng)目的訓(xùn)練,讓你獲得實(shí)踐經(jīng)驗(yàn),在面試中脫穎而出,獲得高薪工作。
此外,一個(gè)頁(yè)面擁有 1,000 個(gè) DOM 元素并不少見(jiàn),盡管這是大多數(shù)性能專(zhuān)家建議的上限。如果有 1,000 個(gè)樣式和
1,000 個(gè) DOM 元素,則瀏覽器必須進(jìn)行潛在的 100 萬(wàn)次樣式表評(píng)估。如此高的數(shù)量可能會(huì)使移動(dòng)設(shè)備完全爬行,即使是 RAM
或可用時(shí)鐘周期較低的臺(tái)式計(jì)算機(jī),開(kāi)始向用戶(hù)呈現(xiàn)頁(yè)面的速度也會(huì)很慢。
將整個(gè)站點(diǎn)普遍使用的樣式放在一個(gè)常用引用的 CSS
文件中是有意義的。但該文件不應(yīng)與單個(gè)頁(yè)面上使用的樣式混淆。對(duì)于使用非常特定樣式的網(wǎng)頁(yè)組件,使用內(nèi)聯(lián) CSS
比將樣式放在需要針對(duì)從未使用過(guò)的頁(yè)面評(píng)估給定選擇器的公共文件中更有意義。
盡早優(yōu)先考慮網(wǎng)站性能
有無(wú)數(shù)的問(wèn)題會(huì)對(duì)網(wǎng)站性能產(chǎn)生負(fù)面影響。但是,如果應(yīng)用程序分析表明上述三個(gè)項(xiàng)目中的任何一個(gè)對(duì)你的站點(diǎn)來(lái)說(shuō)都是一個(gè)問(wèn)題,請(qǐng)首先處理它們,因?yàn)樗鼈兛赡軙?huì)獲得最大的好處。通過(guò)參加Web前端培訓(xùn),可以幫助你快速掌握網(wǎng)站性能改進(jìn)技巧,更好地進(jìn)行開(kāi)發(fā)工作。