改進(jìn)核心網(wǎng)頁指標(biāo)的最有效方法

多年來螟够,網(wǎng)絡(luò)社區(qū)積累了豐富的網(wǎng)絡(luò)性能優(yōu)化知識张吉。雖然任何一項優(yōu)化都可以提升許多網(wǎng)站的性能,但如果同時進(jìn)行所有優(yōu)化,可能會讓人感到不知所措鲫忍。實際上,只有部分優(yōu)化措施適用于任何給定網(wǎng)站溜族。

除非您是網(wǎng)站性能方面的專業(yè)人士浓体,否則可能很難確定哪些優(yōu)化措施對您的網(wǎng)站影響最大。您可能沒有時間全部完成,因此請務(wù)必問自己:您可以選擇哪些最具影響力的優(yōu)化措施來提升用戶體驗助析?

關(guān)于性能優(yōu)化的真相是:您不能僅根據(jù)技術(shù)優(yōu)勢來評判優(yōu)化效果裁替。您還需要考慮人力和組織因素,這些因素會影響您實現(xiàn)任何給定優(yōu)化的可能性貌笨。從理論上講弱判,某些性能改進(jìn)可能具有巨大影響,但在現(xiàn)實中锥惋,很少有開發(fā)者有時間或資源來實現(xiàn)這些改進(jìn)昌腰。另一方面,可能有幾乎所有人都已在遵循的效果極佳的最佳實踐膀跌。本指南介紹了以下 Web 性能優(yōu)化措施:

  • 具有最大的現(xiàn)實影響
  • 與大多數(shù)網(wǎng)站相關(guān)且適用
  • 對大多數(shù)開發(fā)者而言是否切合實際

總的來說遭商,這些是最切實有效的方法,可幫助您改進(jìn) Core Web Vitals 指標(biāo)捅伤。如果您剛開始接觸網(wǎng)頁性能劫流,或者您仍在確定什么能帶來最大的投資回報率,那么建議您從該指南開始丛忆。

Interaction to Next Paint (INP)

作為最新的 Core Web Vitals 指標(biāo)祠汇,Interaction to Next Paint (INP) 有許多值得改進(jìn)的地方。不過熄诡,由于與其已棄用的前身相比可很,達(dá)到“良好”體驗閾值的網(wǎng)站更少,因此您可能是眾多首次學(xué)習(xí)如何優(yōu)化互動響應(yīng)能力的開發(fā)者之一凰浮。不妨先了解這些必備技巧我抠,以便以最有效的方式提升 INP。

1.<wbr style="box-sizing: inherit;"> 經(jīng)常使用收益率袜茧,將耗時較長的任務(wù)分離開來

任務(wù)是瀏覽器執(zhí)行的任何離散工作菜拓,包括渲染、布局笛厦、解析纳鼎、編譯或執(zhí)行腳本。當(dāng)一個任務(wù)的時長超過 50 毫秒時递递,該任務(wù)就變成了長時間運(yùn)行的任務(wù)喷橙。耗時較長的任務(wù)會帶來問題,因為它們可能阻止主線程快速響應(yīng)用戶互動登舞。

雖然您應(yīng)始終努力盡量減少在 JavaScript 中完成的工作贰逾,但您可以通過分解長時間運(yùn)行的任務(wù)來幫助主線程執(zhí)行任務(wù)。為此菠秒,您可以經(jīng)常讓出主線程疙剑,以便更快地進(jìn)行渲染更新和其他用戶互動氯迂。

瀏覽器支持

  • [圖片上傳中...(image-faffde-1731334150102-15)]

    129

  • [圖片上傳中...(image-2b00cc-1731334150102-14)]

    129

  • [圖片上傳中...(image-ab7711-1731334150102-13)]

    x

  • [圖片上傳中...(image-910981-1731334150102-12)]

    x

來源

借助 Scheduler API,您可以使用優(yōu)先級系統(tǒng)將工作加入隊列言缤。具體而言嚼蚀,scheduler.yield() API 會拆分長任務(wù),同時確保能夠在不放棄任務(wù)隊列中的位置的情況下處理互動管挟。

通過分解冗長的任務(wù)轿曙,瀏覽器有更多機(jī)會來負(fù)責(zé)阻礙用戶的關(guān)鍵工作。

了解詳情優(yōu)化耗時較長的任務(wù)僻孝。

2.<wbr style="box-sizing: inherit;"> 避免使用不必要的 JavaScript

網(wǎng)站所發(fā)送的 JavaScript 比以往任何時候都多导帝,而且這種趨勢似乎不會改變。如果您提交的 JavaScript 過多穿铆,就會造成任務(wù)爭奪主線程的注意力您单。這可能會影響網(wǎng)站的響應(yīng)速度,尤其是在關(guān)鍵的啟動期間荞雏。

不過虐秦,這并不是一個無法解決的問題,您可以采取以下措施:

  • 使用基準(zhǔn)廣泛提供的 Web 平臺功能凤优,而不是冗余的基于 JavaScript 的實現(xiàn)悦陋。
  • 使用 Chrome 開發(fā)者工具中的覆蓋率工具查找腳本中未使用的代碼。通過縮減啟動期間所需資源的大小别洪,您可以確保網(wǎng)頁花在解析和編譯代碼上的時間更少叨恨,從而提供更流暢的初始用戶體驗。
  • 使用代碼分塊為初始渲染不需要但日后仍會使用的代碼創(chuàng)建單獨(dú)的軟件包挖垛。
  • 如果您使用的是跟蹤代碼管理器,請定期優(yōu)化代碼秉颗。您可以移除包含未使用的代碼的舊版代碼痢毒,以縮減跟蹤代碼管理器的 JavaScript 占用空間。

了解詳情移除未使用的代碼蚕甥。

3.<wbr style="box-sizing: inherit;"> 避免大規(guī)模渲染更新

JavaScript 執(zhí)行只是影響網(wǎng)站響應(yīng)速度的眾多因素之一哪替。呈現(xiàn)本身就是一項耗費(fèi)巨大的工作,在進(jìn)行大型呈現(xiàn)更新時菇怀,您的網(wǎng)站對用戶互動的響應(yīng)速度可能會更慢凭舶。

優(yōu)化渲染工作并非一個簡單的過程,具體取決于您要實現(xiàn)的目標(biāo)爱沟。即便如此帅霜,您也可以采取以下措施來確保渲染任務(wù)不會變成長任務(wù):

  • 重新整理 JavaScript 代碼中的 DOM 讀寫操作,以避免強(qiáng)制布局布局抖動呼伸。
  • 使 DOM 大小保持小巧身冀。DOM 大小與布局工作強(qiáng)度相關(guān)。當(dāng)渲染程序必須更新非常大的 DOM 的布局時,重新計算其布局所需的工作量可能會大幅增加搂根。
  • 使用 CSS 組件延遲渲染屏幕外的 DOM 內(nèi)容珍促。這并不總是簡單明了,但通過隔離包含復(fù)雜布局的區(qū)域剩愧,您可以避免不必要的布局和渲染工作猪叙。

了解詳情避免大型、復(fù)雜的布局和布局抖動仁卷。

Largest Contentful Paint (LCP)

Largest Contentful Paint (LCP) 是開發(fā)者最難把控的核心 Web 指標(biāo):Chrome 用戶體驗報告中40%的網(wǎng)站未達(dá)到建議的 LCP 閾值沐悦,無法提供良好的用戶體驗。Chrome 團(tuán)隊建議使用以下技術(shù)來最有效地縮短 LCP五督。

1.<wbr style="box-sizing: inherit;"> 確保 LCP 資源可從 HTML 源中發(fā)現(xiàn)并獲得優(yōu)先級

Chrome 團(tuán)隊注意到有關(guān)網(wǎng)頁上的 LCP 的以下事項:

  • 根據(jù) HTTP Archive 的 2022 年網(wǎng)絡(luò)年鑒藏否,72% 的移動網(wǎng)頁將圖片作為 LCP 元素。
  • 通過對 Chrome 中的真實用戶數(shù)據(jù)進(jìn)行的分析充包,我們發(fā)現(xiàn)副签,大多數(shù) LCP 表現(xiàn)不佳的來源在下載 LCP 映像上所花的 LCP 映像的時間只有不到 10%
  • 在 LCP 較差的網(wǎng)頁中基矮,75 百分位數(shù)的 LCP 圖片在客戶端上的加載延遲時間為 1,290 毫秒淆储,這超過了快速體驗預(yù)算的一半。
  • 在 LCP 元素為圖片的網(wǎng)頁中家浇,39% 的圖片的來源網(wǎng)址在初始 HTML 響應(yīng)中不可檢測(例如 <img src="..."><link rel="preload" href="...">)本砰,這會導(dǎo)致瀏覽器的預(yù)加載掃描器無法盡快發(fā)現(xiàn)這些圖片。
  • 根據(jù)《Web Almanac》的資料钢悲,只有 0.03% 的符合條件的網(wǎng)頁利用 fetchpriority HTML 屬性為資源提供了更高的優(yōu)先級点额,其中包括那些可以事半功倍地改善網(wǎng)頁 LCP 的資源。

這些統(tǒng)計數(shù)據(jù)表明莺琳,開發(fā)者有很大的機(jī)會來縮短 LCP 映像的資源加載延遲資源加載時長还棱。

瀏覽器支持

  • [圖片上傳中...(image-823430-1731334150102-11)]

    102

  • [圖片上傳中...(image-d0b927-1731334150102-10)]

    102

  • [圖片上傳中...(image-7994c7-1731334150102-9)]

    132

  • [圖片上傳中...(image-3bca6f-1731334150102-8)]

    17.2

來源

如果資源加載延遲是問題所在,請務(wù)必注意惭等,如果網(wǎng)頁需要等待 CSS 或 JavaScript 完全加載后才能開始加載圖片珍手,那么可能已經(jīng)太晚,無法實現(xiàn)良好的 LCP辞做。此外琳要,您還可以使用 fetchpriority HTML 屬性重新調(diào)整 LCP 圖片的優(yōu)先級,以便其獲得更多帶寬秤茅,從而加快加載速度稚补,縮短資源加載時長。

如果您的 LCP 元素是圖片嫂伞,則應(yīng)在 HTML 響應(yīng)中發(fā)現(xiàn)圖片的網(wǎng)址孔厉,以縮短其資源加載延遲時間拯钻。以下是一些有助于實現(xiàn)這一目標(biāo)的提示:

  • 使用帶有 srcsrcset 屬性的 <img> 元素加載圖片。請勿使用需要 JavaScript 才能呈現(xiàn)的非標(biāo)準(zhǔn)屬性(例如 data-src)撰豺,因為這類屬性的速度始終較慢粪般。9% 的網(wǎng)頁會將 LCP 圖片隱藏在 data-src 后面。
  • 首選服務(wù)器端呈現(xiàn) (SSR) 而非客戶端呈現(xiàn) (CSR)污桦,因為 SSR 意味著 HTML 源代碼中存在整頁標(biāo)記(包括圖片)亩歹。CSR 解決方案要求在發(fā)現(xiàn)映像之前運(yùn)行 JavaScript。
  • 如果需要從外部 CSS 或 JS 文件引用圖片凡橱,您仍然可以使用 <link rel="preload"> 標(biāo)記將其添加到 HTML 源中小作。請注意,內(nèi)嵌樣式引用的圖片無法被瀏覽器的預(yù)加載掃描器發(fā)現(xiàn)稼钩,因此即使在 HTML 源代碼中找到這些圖片顾稀,在加載其他資源時,系統(tǒng)可能仍會阻止發(fā)現(xiàn)它們坝撑,因此在這種情況下静秆,預(yù)加載會很有幫助。

此外巡李,您可以確保盡早以高優(yōu)先級加載 LCP 資源抚笔,從而縮短資源的加載時長:

  • fetchpriority="high" 屬性添加到 LCP 圖片的 <img><link rel="preload"> 標(biāo)記中。這會提高圖片資源的優(yōu)先級侨拦,以便其更早開始加載殊橙。
  • 從 LCP 圖片的 <img> 標(biāo)記中移除 loading="lazy" 屬性。這樣可以避免因確認(rèn)圖片顯示在視口中或附近而引起的加載延遲狱从。
  • 盡可能推遲非關(guān)鍵資源膨蛮。將這些資源移到文檔末尾、延遲加載圖片iframe矫夯,或者使用 JavaScript 異步加載鸽疾,都有助于讓更重要的資源(例如 LCP 圖片)更快加載。

閱讀以下內(nèi)容了解詳情:消除資源加載延遲關(guān)于如何優(yōu)化 LCP 的常見誤解训貌。

2.<wbr style="box-sizing: inherit;"> 力求實現(xiàn)即時導(dǎo)航

理想的用戶體驗是,用戶無需等待網(wǎng)頁加載冒窍。資源可檢測性和優(yōu)先級等 LCP 優(yōu)化措施可以有效縮短用戶等待 LCP 元素加載和呈現(xiàn)的時間递沪,但這些字節(jié)通過網(wǎng)絡(luò)加載并在網(wǎng)頁上呈現(xiàn)的速度存在物理限制。在達(dá)到該上限之前综液,您需要付出極大的努力才能再縮短幾毫秒款慨。因此,為了實現(xiàn)即時導(dǎo)航谬莹,我們需要采用完全不同的方法檩奠。

即時導(dǎo)航會嘗試在用戶開始導(dǎo)航到相應(yīng)網(wǎng)頁之前加載和呈現(xiàn)該網(wǎng)頁桩了。這樣一來,預(yù)渲染的網(wǎng)頁便可立即顯示埠戳,并且 LCP 幾乎為零井誉。恢復(fù)和推測是實現(xiàn)這一目的的兩種方法整胃。當(dāng)用戶返回或前進(jìn)到之前訪問過的網(wǎng)頁時颗圣,系統(tǒng)可以從內(nèi)存緩存中快速恢復(fù)該網(wǎng)頁,使其顯示的樣子與用戶離開時完全一樣屁使≡谄瘢或者,Web 應(yīng)用也可以嘗試預(yù)測用戶接下來會去哪里蛮寂,如果預(yù)測正確蔽午,那么當(dāng)用戶導(dǎo)航到該網(wǎng)頁時,下一個網(wǎng)頁就會已加載并呈現(xiàn)酬蹋。

往返緩存 (bfcache) 可用于恢復(fù)之前訪問過的網(wǎng)頁及老。要使用 bfcache,您必須確保網(wǎng)頁符合 bfcache 資格條件除嘹。網(wǎng)頁不符合 bfcache 條件的常見原因是写半,它們使用 no-store 緩存指令進(jìn)行傳送或具有 unload 事件監(jiān)聽器。

恢復(fù)完全呈現(xiàn)的網(wǎng)頁不僅可以提升加載性能尉咕,還可以提高布局穩(wěn)定性叠蝇。如需詳細(xì)了解 bfcache 以及它在提高 CLS 方面的有效性,請參閱確保網(wǎng)頁符合 bfcache 使用條件部分年缎。

瀏覽器支持

  • [圖片上傳中...(image-ebf97b-1731334150102-7)]

    109

  • [圖片上傳中...(image-73429c-1731334150102-6)]

    109

  • [圖片上傳中...(image-2494b4-1731334150102-5)]

    x

  • [圖片上傳中...(image-227c45-1731334150102-4)]

    x

預(yù)渲染用戶下次訪問的網(wǎng)頁是顯著提升 LCP 性能的另一種有效方法悔捶,可通過 Speculation Rules API 實現(xiàn)。不過单芜,要想實現(xiàn)這些優(yōu)勢蜕该,請確保預(yù)渲染正確的網(wǎng)頁。錯誤的推測會浪費(fèi)服務(wù)器和客戶端上的資源洲鸠,從而影響性能堂淡。因此,您對下一頁的預(yù)期越不確定扒腕,就越應(yīng)謹(jǐn)慎地預(yù)渲染該頁面绢淀。當(dāng)存在疑慮時,您的分析數(shù)據(jù)可讓您信心十足地預(yù)呈現(xiàn)最有可能下次訪問的網(wǎng)頁瘾腰。

了解詳情往返緩存在 Chrome 中預(yù)渲染網(wǎng)頁以實現(xiàn)即時網(wǎng)頁導(dǎo)航皆的。

3.<wbr style="box-sizing: inherit;"> 使用 CDN 優(yōu)化 TTFB

之前的建議側(cè)重于即時導(dǎo)航,可為用戶提供盡可能出色的體驗蹋盆,但在某些情況下费薄,bfcache 和推測性加載技術(shù)可能不適用硝全。假設(shè)有用戶訪問了指向您網(wǎng)站的跨源鏈接,最初的 HTML 文檔響應(yīng)有效地阻止了 LCP楞抡。瀏覽器在收到響應(yīng)的第一個字節(jié)之前伟众,無法開始加載任何子資源。越早完成拌倍,其他所有工作就能越早開始赂鲤。

該時間稱為第一字節(jié)時間 (TTFB)≈簦縮短 TTFB 的最佳方法是:

  • 在地理位置上盡可能靠近用戶的位置發(fā)布內(nèi)容数初。
  • 緩存該內(nèi)容,以便在近期再次請求該內(nèi)容時可以快速提供該內(nèi)容梗顺。

要同時實現(xiàn)這兩點泡孩,最佳方式是使用 CDN。CDN 會將您的資源分發(fā)到全球各地的邊緣服務(wù)器寺谤,從而限制這些資源通過網(wǎng)絡(luò)傳輸?shù)接脩舻木嚯x仑鸥。CDN 通常還具有精細(xì)的緩存控制功能,可根據(jù)您網(wǎng)站的需求進(jìn)行調(diào)整变屁。

CDN 還可以分發(fā)和緩存 HTML 文檔眼俊,但根據(jù)《網(wǎng)絡(luò)年鑒》的統(tǒng)計,只有 29% 的 HTML 文檔請求是通過 CDN 分發(fā)的粟关。這意味著疮胖,網(wǎng)站有很大機(jī)會進(jìn)一步節(jié)省開支。

關(guān)于配置 CDN 的一些提示包括:

  • 緩存靜態(tài) HTML 文檔闷板,即使只是短時間澎灸。例如,內(nèi)容是否始終保持新鮮度很重要嗎遮晚?或者可以延遲幾分鐘嗎性昭?
  • 探索是否可以將在源服務(wù)器上運(yùn)行的動態(tài)邏輯移至邊緣(這是大多數(shù)新型 CDN 的一項功能)。

每當(dāng)您可以直接從邊緣傳送內(nèi)容并避免發(fā)送到源服務(wù)器時县遣,性能就會得到提升糜颠。即使您必須一直訪問到源站,CDN 通常也會經(jīng)過優(yōu)化萧求,以便更快地完成訪問括蝠,因此無論哪種方式,您都能獲益饭聚。

閱讀以下內(nèi)容了解詳情:優(yōu)化加載第一個字節(jié)所需時間

Cumulative Layout Shift (CLS)

Cumulative Layout Shift (CLS) 用于衡量網(wǎng)頁的視覺穩(wěn)定性搁拙。雖然 CLS 是大多數(shù)網(wǎng)站往往都能取得良好效果的指標(biāo)秒梳,但有大約四分之一的網(wǎng)站仍未達(dá)到建議的閾值法绵,因此許多網(wǎng)站仍有很大的機(jī)會改進(jìn)用戶體驗。

1.<wbr style="box-sizing: inherit;"> 為從網(wǎng)頁加載的任何內(nèi)容設(shè)置明確的尺寸

布局偏移通常發(fā)生在其他內(nèi)容加載完畢后現(xiàn)有內(nèi)容移動時酪碘。提高 CLS 的主要方法是盡可能提前預(yù)留所需空間朋譬。

要解決因圖片大小不合適而導(dǎo)致的布局偏移,最佳方法是明確設(shè)置 widthheight 屬性或其等效的 CSS 屬性兴垦。72% 的網(wǎng)頁至少有一張未調(diào)整大小的圖片徙赢。如果沒有明確的尺寸,這些圖片的初始高度為 0px探越,這可能會導(dǎo)致在這些圖片加載并瀏覽器發(fā)現(xiàn)其尺寸時狡赐,布局發(fā)生偏移。這對集體網(wǎng)絡(luò)來說是一個巨大的機(jī)遇钦幔,而且相較于本指南中建議的其他一些做法枕屉,抓住這個機(jī)遇所需的工作量更少。

瀏覽器支持

  • [圖片上傳中...(image-1aebe1-1731334150102-3)]

    88

  • [圖片上傳中...(image-ab2bd0-1731334150102-2)]

    88

  • [圖片上傳中...(image-2bc04d-1731334150102-1)]

    89

  • [圖片上傳中...(image-8d7ed0-1731334150101-0)]

    15

來源

圖片并非 CLS 的唯一貢獻(xiàn)者鲤氢。布局偏移可能是由通常在網(wǎng)頁初次呈現(xiàn)后加載的其他內(nèi)容(包括第三方廣告或嵌入的視頻)導(dǎo)致的搀擂。aspect-ratio 屬性可以派上用場。這是一種廣泛使用的基準(zhǔn) CSS 功能卷玉,可讓開發(fā)者為圖片和非圖片元素顯式設(shè)置寬高比哨颂。這樣,您就可以設(shè)置動態(tài) width(例如相种,根據(jù)屏幕尺寸)威恼,并讓瀏覽器自動計算合適的高度,計算方法與計算有尺寸的圖片大致相同蚂子。

不過沃测,您并非總是能夠知道動態(tài)內(nèi)容的確切尺寸。即使您不知道確切尺寸食茎,仍然可以降低布局偏移的嚴(yán)重程度蒂破。設(shè)置合理的 min-height 通常比允許瀏覽器為空元素使用默認(rèn)高度 0px 更好。使用 min-height 通常也是一個簡單的解決方法别渔,因為它仍然允許容器在需要時增長到最終內(nèi)容的高度附迷,只是將增長量減少到更易于接受的水平。

閱讀以下內(nèi)容了解詳情:優(yōu)化 Cumulative Layout Shift哎媚。

2.<wbr style="box-sizing: inherit;"> 確保網(wǎng)頁符合使用 bfcache 的條件

如本指南前面所述喇伯,往返緩存 (bfcache) 會從內(nèi)存快照中即時加載瀏覽器歷史記錄中較早或較晚的網(wǎng)頁。雖然 bfcache 是一項重要的瀏覽器級性能優(yōu)化拨与,可提升 LCP稻据,但它還能完全消除布局偏移。事實上买喧,2022 年引入 bfcache 是當(dāng)年 CLS 改善幅度最大的因素捻悯。

盡管如此匆赃,大量網(wǎng)站不符合使用 bfcache 的條件,因此錯失了這一免費(fèi)的網(wǎng)站性能提升機(jī)會今缚。除非您的網(wǎng)頁正在加載您不希望從內(nèi)存恢復(fù)的敏感信息算柳,否則請確保您的網(wǎng)頁符合使用 bfcache 的條件。

網(wǎng)站所有者應(yīng)檢查網(wǎng)頁是否符合加入 bfcache 的條件姓言,并解決所有不符合要求的原因瞬项。Chrome 在開發(fā)者工具中提供了 bfcache 測試程序,您還可以使用 Not Restored Reasons API 來檢測該字段中的不符合條件的原因何荚。

閱讀以下內(nèi)容了解詳情:往返緩存囱淋。

3.<wbr style="box-sizing: inherit;"> 避免使用會導(dǎo)致布局的 CSS 屬性的動畫和過渡

布局偏移的另一個常見原因是元素呈現(xiàn)動畫效果。例如兽泣,Cookie 橫幅或其他從頂部或底部滑入的通知橫幅通常對 CLS 有影響绎橘。如果這些橫幅會將其他內(nèi)容推開,這種情況尤其嚴(yán)重唠倦,但即使不會称鳞,為其添加動畫效果也可能會影響 CLS。

雖然 HTTP Archive 數(shù)據(jù)無法確切地將動畫與布局偏移聯(lián)系起來稠鼻,但數(shù)據(jù)確實表明冈止,與整體網(wǎng)頁相比,如果網(wǎng)頁為任何可能會影響布局的 CSS 屬性添加動畫候齿,CLS 達(dá)到“良好”水平的可能性會降低 15%熙暴。某些媒體資源的 CLS 比其他媒體資源要高。例如慌盯,在整體頁面被評為 CLS 較差的網(wǎng)頁中周霉,采用 marginborder 寬度動畫的網(wǎng)頁被評為 CLS 較差的網(wǎng)頁占比幾乎是前者的兩倍。

這或許不足為奇亚皂,因為每當(dāng)您為任何會布局調(diào)整的 CSS 屬性進(jìn)行轉(zhuǎn)換或添加動畫效果時俱箱,都會導(dǎo)致布局偏移。如果這些布局偏移不在用戶互動后的 500 毫秒內(nèi)發(fā)生灭必,則會影響 CLS狞谱。

有些開發(fā)者可能會感到意外,即便元素不在正常文檔流中禁漓,也是如此跟衅。例如,對 topleft 進(jìn)行動畫處理的絕對定位元素會導(dǎo)致布局偏移播歼,即使它們沒有推送其他內(nèi)容也是如此伶跷。不過,如果您不是為 topleft 添加動畫效果,而是為 transform:translateX()transform:translateY() 添加動畫效果撩穿,不會導(dǎo)致瀏覽器更新頁面布局磷支,從而避免布局偏移。

長期以來食寡,優(yōu)先使用可在瀏覽器的合成器線程上更新的 CSS 屬性進(jìn)行動畫處理一直是性能方面的最佳實踐,因為這會將工作從主線程移至 GPU廓潜。除了是一種常規(guī)性能最佳實踐抵皱,它還有助于改進(jìn) CLS。

一般來說辩蛋,請勿為需要瀏覽器更新頁面布局的 CSS 屬性添加動畫或轉(zhuǎn)換呻畸,除非您是在響應(yīng)用戶點按或按鍵操作(但不是 hover)時執(zhí)行此操作。請盡可能使用 CSS transform 屬性實現(xiàn)轉(zhuǎn)換和動畫悼院。

當(dāng)頁面為可能運(yùn)行緩慢的 CSS 屬性添加動畫時伤为,避免使用未合成的動畫 Lighthouse 審核會發(fā)出警告。

了解詳情優(yōu)化動畫引起的布局偏移据途。

總結(jié)

提升網(wǎng)頁性能可能看起來很難绞愚,尤其是考慮到網(wǎng)絡(luò)上有大量的指導(dǎo)信息需要參考。不過颖医,通過關(guān)注這份簡短的最有效的最佳實踐列表位衩,您可以重新專注于解決問題,并有望為您網(wǎng)站的核心網(wǎng)頁指標(biāo)更進(jìn)一步熔萧。

如果您想采取上述優(yōu)化措施之外的措施糖驴,請參閱以下指南了解詳情:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市佛致,隨后出現(xiàn)的幾起案子贮缕,更是在濱河造成了極大的恐慌,老刑警劉巖俺榆,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件感昼,死亡現(xiàn)場離奇詭異,居然都是意外死亡肋演,警方通過查閱死者的電腦和手機(jī)抑诸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來爹殊,“玉大人蜕乡,你說我怎么就攤上這事」?洌” “怎么了层玲?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我辛块,道長畔派,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任润绵,我火速辦了婚禮线椰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘尘盼。我一直安慰自己憨愉,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布卿捎。 她就那樣靜靜地躺著配紫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪午阵。 梳的紋絲不亂的頭發(fā)上躺孝,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天,我揣著相機(jī)與錄音底桂,去河邊找鬼植袍。 笑死,一個胖子當(dāng)著我的面吹牛戚啥,可吹牛的內(nèi)容都是我干的奋单。 我是一名探鬼主播,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼猫十,長吁一口氣:“原來是場噩夢啊……” “哼览濒!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拖云,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤贷笛,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后宙项,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體乏苦,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年尤筐,在試婚紗的時候發(fā)現(xiàn)自己被綠了汇荐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡盆繁,死狀恐怖掀淘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情油昂,我是刑警寧澤革娄,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布倾贰,位于F島的核電站,受9級特大地震影響拦惋,放射性物質(zhì)發(fā)生泄漏匆浙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一厕妖、第九天 我趴在偏房一處隱蔽的房頂上張望首尼。 院中可真熱鬧,春花似錦叹放、人聲如沸饰恕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至破加,卻和暖如春俱恶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背范舀。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工合是, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人锭环。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓聪全,卻偏偏與公主長得像,于是被迫代替她去往敵國和親辅辩。 傳聞我的和親對象是個殘疾皇子难礼,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,700評論 2 345

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