整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          10條影響CSS渲染速度的寫法與建議

          、*{} #zishu *{} 盡量避開

          由于不同瀏覽器對HTML標(biāo)簽的解釋有差異,所以最終的網(wǎng)頁效果在不同的瀏覽器中可能是不一樣的,為了消除這方面的風(fēng)險,設(shè)計者通常會在CSS的一個始就把所有標(biāo)簽的默認(rèn)屬性全部去除,以達到所有簽標(biāo)屬性值都統(tǒng)一的效果。所以就有了*通配符。*會遍歷所有的標(biāo)簽;

          *{margin:0; padding:0}

          ●建議的的解決辦法:

          不要去使用生僻的標(biāo)簽,因為這些標(biāo)簽往往在不同瀏覽器中解釋出來的效果不一樣;所以你要盡可能的去使用那些常用的標(biāo)簽;

          不要使用*;而是把你常用到的這些標(biāo)簽進行處理;例如:body,li,p,h1{margin:0; padding:0}

          2、濾鏡的一些東西不要去用

          IE的一些濾鏡在FIREFOX中不支持,往往寫一些效果時你還是使用CSS HACK;而濾鏡是一個非常毫資源的東西;特別是一些羽化、陰影和一個前透明的效果;

          ●建議的解決辦法:

          能不使用就不要使用,一方面兼容問題;很多效果只能在IE中使用;

          就本例而言,如果非要這樣在的效果,建議用圖片作背景;(只說優(yōu)化速度,實際應(yīng)用還是可以小部分用,有人可能會說,用圖片還多一個HTTP請求呢,呵呵……)

          一個非常好的例子,就是在今年512大地震時,很多網(wǎng)站一夜之間全部變成了灰色,他們只用了一行CSS代碼:

          body{filter: gray;}

          但,你會看會看到這些網(wǎng)頁非常的慢,打開后你的CPU也會飆升,不夸張的說,如果你的電腦配置差,干死你也不為過。

          3、一個頁面上少用絕對定位

          絕對定位(position:absolute)是網(wǎng)頁布局中很常用到的,特別是作一些浮動效果時,也會讓頁面看起來非常的酷。但網(wǎng)頁中如果使用過多的絕對定位,會讓你的網(wǎng)頁變得非常的慢,這一點上邊FIREFOX表現(xiàn)要比IE還要差。

          ●建議的解決辦法:

          盡可能少用,這個少用的值是多少,也沒有一個非常好的值來說明;還要看絕定定位這個標(biāo)簽里邊的內(nèi)容的多少;在這里我只能說,這樣寫會有性能問題,少用。

          如果能用變通實現(xiàn)同樣的效果,就用變通的辦法。

          4、background 背景圖片的平鋪

          有些網(wǎng)頁的背景或頁面中某塊的背景通常要用到圖片的平鋪,平鋪后就會有平鋪次數(shù)的問題,如果是單次還好,如果是多次,就廢了。

          ●建議的作法:

          色彩少的圖片要作成gif圖片;

          平鋪的圖片盡可能大一些,如果是色彩少的GIF圖片,圖片大一些,實際大小也不會大多少;上邊的兩個例子就很好的證明,第一個圖片非常少,第二個圖大較大一些;但速度是非常不一樣的;

          5、讓屬性盡可能多的去繼承

          盡可能讓一些屬性子可以繼承父,而不是覆蓋父;

          6、CSS的路徑別太深

          #zishu #info #tool #sidebar h2{ font-size:12px;}

          7、能簡寫的一些就簡寫

          這個對渲染速度沒有影響;只是少幾個字符;

          8、別放空的的class或沒有的class在HTML代碼中

          9、float 的應(yīng)用

          這個東西我的感覺是如果使用不當(dāng),百分百有性能問題,而且還非常的大,但實在不知道怎么樣能弄一個例子出來;這里只能建議大家如果不是很明白float是怎么工作的,還是少使用為妙。

          曾經(jīng)因為這個把IE干死過,我寫過一個例子,雖說和這個沒有什么太大的關(guān)系:IE之死__原來與CSS有關(guān).

          10、合理的布局

          為什么這么說呢,合理的布局,可以改變CSS的寫法以及渲染過程。

          要:在本文中,將重點關(guān)注網(wǎng)頁的初始渲染,即它從解析 HTML 開始。 我將探索可能導(dǎo)致高渲染時間的問題,以及如何解決它們。

          本文分享自華為云社區(qū)《頁面首屏渲染性能指南-云社區(qū)-華為云》,作者:Ocean2022。

          我們知道渲染頁面是一個將服務(wù)器的響應(yīng)內(nèi)容翻譯成圖片的過程。但是,如果你頁面的渲染性能比較糟糕的話,可能會帶來相對較高的跳出率。

          在本文中,我將重點關(guān)注網(wǎng)頁的初始渲染,即它從解析 HTML 開始。 我將探索可能導(dǎo)致高渲染時間的問題,以及如何解決它們。

          關(guān)鍵渲染路徑(CRP)

          關(guān)鍵渲染路徑 (CRP) 是瀏覽器將代碼轉(zhuǎn)換為屏幕上可顯示像素的過程。 它有幾個階段,其中一些可以并行執(zhí)行以節(jié)省時間,但有些部分必須依次完成。 如下圖所示:

          首先,一旦瀏覽器得到響應(yīng),它就會開始解析它。 當(dāng)它遇到依賴項時,它會嘗試下載它。 如果它是一個樣式表文件,瀏覽器必須在渲染頁面之前完全解析它,這就是為什么 CSS 會阻塞渲染的原因。

          如果是腳本,瀏覽器必須:停止解析,下載腳本,然后運行。 只有在那之后它才能繼續(xù)解析,因為 JavaScript 程序可以改變網(wǎng)頁的內(nèi)容(尤其是 HTML)。 這就是為什么 JS 會阻塞解析的原因。

          完成所有解析后,瀏覽器將構(gòu)建文檔對象模型 (DOM) 和級聯(lián)樣式表對象模型 (CSSOM)。 將它們組合在一起得到渲染樹。 頁面的不顯示部分不會進入渲染樹,因為它只包含繪制頁面所需的數(shù)據(jù)。

          倒數(shù)第二步是將渲染樹進行布局, 這個階段也稱為回流:就是計算每個渲染樹節(jié)點的每個位置及其大小的地方。

          最后一步是繪制。 它會根據(jù)瀏覽器在前一階段計算得到的數(shù)據(jù)對像素進行著色。

          優(yōu)化相關(guān)結(jié)論

          因此,根據(jù)這一過程,我們在優(yōu)化性能方面,得出了一些結(jié)論。如果你要提升頁面初始化渲染的性能,你需要:

          • 減少傳輸?shù)臄?shù)據(jù)量
          • 減少瀏覽器必須下載的資源數(shù)量(尤其是阻塞的資源)
          • 減小 CRP 的長度

          同時,我們會根據(jù)下面 3 個指標(biāo)來衡量優(yōu)化的效率:

          • FP(First Paint)
          • FCP(First Contentful Paint)
          • FMP(First Meaningful Paint)

          除了渲染時間之外,還有其他一些因素也需要考慮。例如,你的頁面使用了多少阻塞資源以及下載它們需要多長時間。

          性能優(yōu)化策略

          鑒于我們在上面得出的結(jié)論,我們得出網(wǎng)站性能優(yōu)化有三種主要策略:

          1. 盡量減少通過網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量;
          2. 減少通過網(wǎng)絡(luò)傳輸?shù)馁Y源總數(shù);
          3. 縮短關(guān)鍵渲染路徑;

          1. 減少要傳輸?shù)臄?shù)據(jù)量

          首先,移除所有未使用的部分,例如 JavaScript 中無法訪問的函數(shù)、帶有從不匹配任何元素的選擇器的樣式以及被 CSS 永遠(yuǎn)隱藏的 HTML 標(biāo)簽。 其次,刪除所有重復(fù)項。

          然后,我建議建立一個自動壓縮過程。 例如,它應(yīng)該從你的后端服務(wù)中刪除所有注釋(但不是源代碼)以及每個不包含附加信息的字符(例如 JS 中的空白字符)。

          完成后,我們剩下的可以是文本字符串。 這意味著我們可以安全地應(yīng)用諸如 GZIP(大多數(shù)瀏覽器都理解)之類的壓縮算法。

          最后,還有緩存。 瀏覽器第一次呈現(xiàn)頁面時它不會有幫助,但它會在以后的訪問中節(jié)省很多。 但是,記住兩點至關(guān)重要:

          • 如果你使用 CDN,請確保支持緩存并在正確設(shè)置。
          • 與其等待資源的到期,不如 將文件的“指紋”嵌入到其 URL 中,以使本地緩存無效。

          當(dāng)然,應(yīng)該為每個資源定義緩存策略。 有些可能很少改變或根本不會改變,有的則是變化的很快,還有些文件包含敏感的信息(可以使用 “private” 防止 CDN 緩存私有數(shù)據(jù))。

          2. 減少關(guān)鍵資源的總數(shù)

          “關(guān)鍵”僅指網(wǎng)頁正確呈現(xiàn)所需的資源。 因此,我們可以直接跳過所有流程中沒有涉及的樣式以及腳本文件。

          樣式

          為了告訴瀏覽器不需要特定的 CSS 文件,我們應(yīng)該為所有引用樣式表的鏈接設(shè)置媒體屬性。 使用這種方法,瀏覽器將只根據(jù)需要處理與當(dāng)前媒體(設(shè)備類型、屏幕尺寸)匹配的資源同時降低所有其他樣式表的優(yōu)先級。 例如,如果你將 media=“print” 屬性添加到引用樣式以打印頁面的樣式標(biāo)記,則這些樣式不會在不打印媒體時干擾你的關(guān)鍵渲染路徑

          為了進一步改進該過程,你還可以將一些樣式內(nèi)聯(lián),這可以為我們節(jié)省了至少一次到服務(wù)器的往返行程

          腳本

          如上所述,腳本會阻塞解析,因為它們可以改變 DOM 和 CSSOM。 為了避免這一點,所有腳本標(biāo)簽都必須用屬性標(biāo)記——異步或延遲。

          標(biāo)有 async 的腳本不會阻塞 DOM 構(gòu)建或 CSSOM,因為它們可以在 CSSOM 構(gòu)建之前執(zhí)行。 但請記住,內(nèi)聯(lián)腳本無論如何都會阻止 CSSOM,除非你將它們放在 CSS 之上。

          相比之下,標(biāo)有 defer 的腳本將在頁面加載結(jié)束時進行執(zhí)行。

          換句話說,使用 defer,腳本直到頁面加載事件被觸發(fā)后才會執(zhí)行,而 async 讓腳本在文檔被解析時就會在后臺運行。

          3.縮短關(guān)鍵渲染路徑長度

          最后,應(yīng)將 CRP 長度縮短到可能的最小值。

          作為樣式標(biāo)簽屬性的媒體查詢將減少必須下載的資源總數(shù)。 script 標(biāo)簽屬性 defer 和 async 將防止相應(yīng)的腳本阻塞解析。

          使用 GZIP 壓縮、壓縮和歸檔資源將減少傳輸數(shù)據(jù)的大?。◤亩矞p少數(shù)據(jù)傳輸時間)。

          內(nèi)聯(lián)一些樣式和腳本也可以減少瀏覽器和服務(wù)器之間的往返次數(shù)。

          按照最新的最佳性能實踐理念,一個網(wǎng)站應(yīng)該做的最快的第一件事就是展示 ATF 內(nèi)容。 ATF 代表首屏。 這是立即可見的區(qū)域,無需滾動。 因此,最好以首先加載所需樣式和腳本的方式重新排列與渲染相關(guān)的所有內(nèi)容,而其他所有內(nèi)容都停止(既不解析也不渲染)。

          結(jié)尾

          總而言之,網(wǎng)站性能優(yōu)化包含了網(wǎng)站響應(yīng)的各個方面,例如緩存、設(shè)置 CDN、重構(gòu)、資源優(yōu)化等,但是所有這些都可以逐步完成。 作為 Web 開發(fā)人員,你可以將本文作為參考,并始終記住在實驗之前和之后測量性能。

          瀏覽器開發(fā)人員盡最大努力優(yōu)化你訪問的每個頁面的網(wǎng)站性能,這就是瀏覽器通常實現(xiàn)所謂的“預(yù)加載器”的原因。 這部分程序會在你以 HTML 格式請求的資源之前進行掃描,以便一次發(fā)出多個請求并讓它們并行運行。 這就是為什么在 HTML(逐行)以及腳本標(biāo)簽中保持樣式標(biāo)簽彼此靠近的原因。

          此外,嘗試批量更新 HTML 以避免多個布局事件,這些事件不僅由 DOM 或 CSSOM 中的更改觸發(fā),而且在設(shè)備方向更改和窗口大小調(diào)整時也會觸發(fā)。

          點擊下方,第一時間了解華為云新鮮技術(shù)~

          華為云博客_大數(shù)據(jù)博客_AI博客_云計算博客_開發(fā)者中心-華為云

          擊右上方紅色按鈕關(guān)注“小鄭搞碼事”,每天都能學(xué)到知識,搞懂一個問題!

          有關(guān)在頁面渲染方面的性能優(yōu)化。這里提幾點需要考慮的。

          1. 把CSS資源引用放到HTML文件頂部。

          2. JavaScript資源引用放到HTML文件底部。

          3. 不要在HTML中直接縮放圖片。

          在HTML中直接縮放圖片會導(dǎo)致頁面內(nèi)容的重排重繪,此時可能會使用頁面中的其他操作產(chǎn)生卡頓,因此要盡量減少在頁面中直接進行圖片縮放。

          4. 減少DOM元素數(shù)量和深度。

          5. 盡量避免使用<table>、<iframe>等慢元素。

          6. 避免運行耗時的JavaScript。

          7. 避免使用CSS表達式或CSS濾鏡。

          CSS表達式或CSS濾鏡的解析渲染速度是比較慢的。在有其他解決方案的情況下應(yīng)該盡量避免使用。


          主站蜘蛛池模板: 中文字幕乱码人妻一区二区三区 | 亚洲一区二区无码偷拍| 色婷婷香蕉在线一区二区| 国99精品无码一区二区三区| 无码人妻精品一区二| 99热门精品一区二区三区无码| 久久影院亚洲一区| 视频一区二区中文字幕| 国产精品成人99一区无码 | 亚洲欧美日韩一区二区三区| 色老头在线一区二区三区 | 亚洲AV综合色一区二区三区| 本免费AV无码专区一区| 一区国严二区亚洲三区| 人妻互换精品一区二区| 国产在线一区观看| 一区二区三区在线免费观看视频| 女人和拘做受全程看视频日本综合a一区二区视频 | 东京热无码av一区二区| 亚洲国产激情一区二区三区| 国产一区二区三区福利| 国产主播福利精品一区二区| 免费高清av一区二区三区| 国模无码一区二区三区| 精品国产一区二区三区久| 日韩人妻无码免费视频一区二区三区 | 亚洲午夜一区二区电影院| 久久久精品人妻一区亚美研究所| 国产一区二区三区久久精品| 国产一区三区二区中文在线| 国产亚洲欧洲Aⅴ综合一区| 免费一区二区无码视频在线播放| 亚洲高清成人一区二区三区| 精品免费国产一区二区三区| 国产av夜夜欢一区二区三区| 国产一区二区在线观看麻豆| 日韩精品一区二区三区中文版| 免费日本一区二区| 久久精品无码一区二区三区日韩 | 国产午夜福利精品一区二区三区| 亚洲熟女一区二区三区|