Lazy memuat

Cara lazy memuat gambar dan iframes meningkatkan Core Web Vitals, memuat atribut, SEO risks dari lazy-memuat above--fold konten, dan cara Googlebot renders deferred konten.

Pertama kali diterbitkan: 2 Jul 2026 · Terakhir diperbarui: 22 Agu 2026 · Advanced
Bahasa

Lazy memuat defers off-screen gambar dan iframes until mereka're tentang untuk menggulir ke view, cutting initial halaman weight dan helping Core Web Vitals. native cara adalah memuat="lazy" _(terjemahan)_ “lazy” atribut pada <img> dan <iframe> — no JavaScript diperlukan. besar mistake adalah lazy-memuat Anda hero/LCP gambar, yang delays Largest Contentful Paint. Googlebot tidak menggulir atau mengklik, jadi anything gated di balik sebuah menggulir atau mengklik event dapat go unseen. ini adalah tidak sebuah langsung peringkat faktor — effect berjalan melalui Core Web Vitals dan crawlability. Memverifikasi apa sebenarnya renders di Pencarian Console's pemeriksaan URL alat: gambar URLs seharusnya sit di src atribut dari dirender HTML.

TL;DR — Lazy memuat defers off-screen gambar dan iframes until mereka dekat area pandang, cutting initial halaman weight (membantu LCP) dan startup main-thread berfungsi (membantu INP). native loading="lazy" atribut pada <img>/<iframe> memiliki replaced sebagian besar JS libraries; hanya lazy dan eager adalah bermakna nilai (auto adalah deprecated). damaging mistakes: lazy-memuat LCP/above—fold gambar (delays very metric Anda adalah chasing), dan gating konten di balik menggulir/mengklik — yang Googlebot tidak pernah triggers karena ini tidak interact dengan halaman. ini adalah tidak sebuah langsung peringkat faktor; effect berjalan melalui Core web Vitals dan crawlability. Memverifikasi di Pencarian Console’s pemeriksaan URL alat itu gambar URLs land di src atribut dari dirender HTML.

Apa lazy memuat sebenarnya melakukan

idea adalah sederhana: hanya muat resources ketika Anda perlu them, alih-alih memuat semuanya di sekali. pada sebuah media-heavy halaman, downloading setiap gambar dan embed di awal mempertahankan peramban busy fetching hal pengunjung dapat tidak pernah menggulir untuk — burning bandwidth, memory, dan battery untuk tidak ada. Deferring off-screen ones lets above—fold konten paint sooner. Martin Splitt dibuat tepat ini poin pada Google’s Pencarian Off Record episode “Pemuatan lambat demystified” (terjemahan) “Lazy memuat demystified”: goal adalah untuk hindari berfungsi itu yields tidak ada, karena non-critical gambar halaman akan menjadi fine tanpa hanya pertahankan peramban occupied.

ini connects untuk Core web Vitals sebagian besar orang adalah chasing. Fewer bytes competing untuk network di awal berarti Largest Contentful Paint element dapat merender sooner. untuk iframes — ads, social widgets, comment bagian, maps — deferring them juga cuts main-thread berfungsi selama startup, yang adalah sebuah Interaction untuk Next Paint win, tidak hanya sebuah LCP satu. Google’s own web.dev panduan frames lazy-dimuat iframes sebagai sebuah INP improvement selama pemuatan halaman.

Native vs. JavaScript-driven lazy memuat

sebuah sedikit tahun ago, peramban gained sebuah native loading atribut untuk gambar dan iframes, jadi Anda dapat hand seluruh job untuk peramban alih-alih wiring naik sebuah JavaScript API. di my JavaScript SEO panduan di Ahrefs I membuat sama observation: sejak I pertama wrote itu piece, lazy memuat memiliki mostly moved dari menjadi JavaScript-driven untuk menjadi handled oleh peramban. Anda akan masih menjalankan ke JS-driven setups, dan untuk gambar mereka’re biasanya fine — hal I periksa adalah apakah aktual konten (tidak hanya gambar) adalah menjadi lazy dimuat, karena itu setups adalah ones itu memiliki caused konten tidak untuk menjadi picked naik correctly.

native versi:

<!-- Below-the-fold image: defer it -->
<img src="gallery-07.jpg" loading="lazy" width="800" height="600" alt="…">

<!-- Off-screen embed: defer it -->
<iframe src="https://www.youtube.com/embed/…" loading="lazy" title="…"></iframe>

selalu menetapkan eksplisit width/height (atau sebuah aspect-ratio) pada lazy gambar jadi peramban reserves space sebelum gambar memuat — itu’s biggest layout-shift risk dengan deferred gambar. Reserved dimensions bukan sebuah absolute CLS jaminan, though: jika surrounding layout atau sebuah responsive crop masih perubahan setelah gambar memuat, Anda dapat masih melihat sebuah shift, jadi confirm dengan sebuah nyata layout-shift trace alih-alih assuming fixed dimensions saja settle ini.

Lazy memuat dan iframes perlu satu lebih perbedaan: loading="lazy" pada sebuah <iframe> hanya defers ketika embed’s fetch dan creation happen. ini tidak menetapkan -nya title, focus perilaku, sandbox, allow/permissions kebijakan, referrerpolicy, consent handling, atau dimensions untuk Anda — itu masih perlu mereka own attention, dan sebuah embed dapat pertahankan melakukan berfungsi (scripts, tracking pixels, layout) sekali ini becomes memenuhi syarat untuk muat. dan don’t assume “bagian bawah halaman” (terjemahan) “di bawah fold” behaves yang sama di mana-mana: display: none konten, offscreen carousel slides, transformed elements, dan nested menggulir containers dapat intersect area pandang differently daripada sebuah plain below—fold element, jadi uji aktual layout dan navigation kontrol alih-alih assuming equivalence.

loading atribut’s nilai

hanya dua nilai penting today:

  • loading="lazy" — defer resource until ini adalah dekat area pandang.
  • loading="eager" — muat ini segera, bawaan perilaku. gunakan ini untuk menjadi eksplisit tentang above—fold gambar.
Evidence for this claim The native loading attribute supports lazy loading for images and iframes without a JavaScript lazy-loading library. Scope: Browser-level lazy loading behavior; browser heuristics decide the fetch distance. Confidence: high · Verified: web.dev: Browser-level image lazy loading

Anda dapat melihat loading="auto" di older artikel — ini adalah deprecated di Chrome, jadi tidak jangkauan untuk ini. ada tidak perlu untuk; menghilangkan atribut sudah memberikan Anda bawaan (eager) perilaku.

Cara dekat adalah “dekat” (terjemahan) “dekat”? loading="lazy" adalah sebuah hint, tidak sebuah author-controlled jaminan — spec leaves aktual near-viewport decision untuk peramban. Chromium tries untuk fetch sebuah lazy resource lebih awal enough itu ini adalah ready oleh waktu Anda menggulir untuk ini, dan trigger distance varies oleh peramban, connection speed, dan resource jenis; ini bukan sebuah fixed pixel nilai Anda dapat rely pada atau reproduce di seluruh peramban atau versi. tidak menerbitkan — atau kepercayaan — sebuah spesifik “loads N pixels before the viewport” (terjemahan) “memuat N pixels sebelum area pandang” angka; treat near-viewport window sebagai implementation-defined dan confirm aktual perilaku dengan sebuah Network trace pada peramban/connection Anda care tentang alih-alih assuming sebuah constant.

Native lazy memuat juga plays fine dengan responsive gambar: ini applies untuk ordinary src dan srcset/sizes selection, jadi Anda tidak lose responsive gambar perilaku oleh menambahkan loading="lazy". jika Anda sebagai gantinya hide nyata URL hanya di sebuah data-* atribut untuk sebuah script untuk mengganti di later, memuat sekarang depends pada itu script — uji dirender HTML dan apa happens jika script fails (lebih pada ini di Scripts dan Troubleshooting tabs).

Evidence for this claim Native lazy loading works with ordinary src and responsive srcset/sizes selection; hiding the real URL only in data-* attributes makes loading dependent on script and should be tested in rendered HTML and under script failure. Scope: responsive image fetching and layout Confidence: high · Verified: HTML Standard: img

#1 mistake: lazy-memuat LCP / above—fold gambar

ini adalah failure I melihat sebagian besar, dan setiap sumber agrees pada ini. jika Anda lazy-muat hero gambar — atau apa pun gambar mungkin untuk menjadi LCP element — Anda telah told peramban untuk wait pada single sebagian besar penting pixel untuk perceived muat speed. peramban juga dapat’t lazy-muat sebuah gambar until ini mengetahui tempat gambar akan sit pada halaman, jadi lazy above—fold gambar tend untuk muat lebih slowly daripada eager ones. itu langsung delays Largest Contentful Paint, metric Google mengatakan seharusnya resolve di dalam pertama 2,5 detik dari muat.

Do not lazy-load the observed or likely LCP image; confirm the actual request and paint timing in a trace. Sumber: Lazy Loading

The eager path discovers the likely LCP image in HTML and starts its request promptly. The lazy path waits for browser loading heuristics before request start. The comparison uses no fixed timing values and notes that actual LCP must be measured.

© Patrick Stox LLC · CC BY 4.0 ·

Splitt menempatkan flip side plainly pada SOTR episode: jika Anda adalah tidak menggunakan lazy memuat tempat Anda harus, itu akan probably hurt beberapa aspect dari Core web Vitals — sebagian besar mungkin LCP. Jadi ini cuts keduanya cara. aturan:

  • Probable atau observed LCP candidate → muat eagerly (omit loading="lazy", atau menetapkan eager). pertimbangkan fetchpriority="high" pada LCP gambar.
  • Di bawah fold → loading="lazy".

Tidak setiap gambar di atas fold adalah LCP candidate — identify aktual satu (sebuah performa trace atau PageSpeed Insights akan name ini) dan memverifikasi -nya permintaan timing alih-alih treating setiap pertama-screen gambar yang sama. dan ini adalah terpisah hints, tidak satu setting: loading="eager" (atau menghilangkan loading) hanya berarti peramban tidak dapat defer penemuan dari resource — ini tidak itu sendiri raise fetch prioritas. fetchpriority adalah sebuah distinct, advisory hint pada atas dari itu. Stacking sebuah <link rel="preload"> dengan loading="lazy" pada yang sama resource mengirim peramban conflicting maksud, jadi periksa aktual network waterfall alih-alih assuming combination melakukan apa Anda expect.

blanket anti-pattern adalah switching pada lazy memuat untuk setiap gambar situs-wide — sebuah umum CMS bawaan. sebagai Splitt noted, jika setiap gambar adalah lazy dimuat, lalu gambar itu adalah (atau seharusnya menjadi) segera terlihat mendapatkan lazy dimuat too, yang adalah tepat kasus Anda ingin hindari.

Cara Googlebot renders lazy-dimuat konten

Here’s crawling reality itu trips orang naik: Googlebot tidak menggulir, dan ini tidak mengklik. ini renders Anda halaman dengan sebuah headless peramban, tetapi ini tidak simulate sebuah pengguna interacting dengan ini. Google menyatakan ini langsung — -nya direkomendasikan lazy-memuat metode deliberately tidak rely pada pengguna tindakan seperti scrolling atau clicking, karena Google Pencarian melakukan tidak interact dengan Anda halaman.

Evidence for this claim Google Search does not scroll or click to trigger lazy-loaded content, so implementations should not depend on user interaction and should expose resource URLs in rendered HTML. Scope: Google Search guidance for JavaScript-driven lazy loading. Confidence: high · Verified: Google Search Central: Lazy-load content

“The methods mentioned don’t” (terjemahan) “methods mentioned jangan”

itu’s mengapa cara dari Anda implementation penting. Google’s doc lists tiga implementations ini mempertimbangkan safe: peramban’s dibangun-di lazy memuat untuk gambar dan iframes, IntersectionObserver API (dengan sebuah polyfill), atau sebuah JavaScript library itu memuat data sebagai ini enters area pandang. semua tiga key off area pandang intersection — tidak sebuah menggulir atau mengklik event itu Googlebot akan tidak pernah fire.

tinggi-risk pattern adalah sebuah custom atau ketiga-party JS lazy-muat library. jika library misbehaves dan gambar URL tidak pernah lands di src atribut, Google cukup tidak dapat pick itu gambar naik — Splitt described tepat ini failure mode pada SOTR episode. ada tidak ada untuk indeks jika URL bukan ada. ini adalah yang sama hal I flag di my JavaScript SEO panduan: gambar lazy memuat adalah biasanya fine, tetapi lazy-dimuat konten adalah tempat pengindeksan masalah creep di, dan fix adalah untuk periksa apa Google sebenarnya renders.

Infinite menggulir adalah sebuah berbeda masalah

tidak conflate basic gambar/iframe lazy memuat dengan infinite menggulir atau paginated memuat. Deferring gambar adalah satu hal; memuat baru chunks dari konten sebagai pengguna scrolls adalah lainnya, dan ini perlu -nya own architecture. Google’s panduan: memberikan setiap chunk sebuah persistent, unik URL, pertahankan konten stable per URL (gunakan absolute halaman angka seperti ?page=12, tidak relative nilai seperti ?date=yesterday), dan update displayed URL dengan History API sebagai setiap chunk becomes primary terlihat konten jadi ini dapat menjadi refreshed, shared, dan ditautkan. Skip itu dan deeper konten di balik sebuah endless menggulir dapat tidak pernah menjadi reliably di-crawl atau terindeks.

cara uji ini

verification path adalah yang sama di Google’s doc dan di my own methodology: gunakan Pencarian Console’s pemeriksaan URL alat dan lihat dirender HTML. jika Anda gambar (atau video) URLs muncul di src atribut pada <img>/<video> elements di itu dirender HTML, Anda setup berfungsi. Google mengatakan ini outright — periksa dirender HTML untuk pastikan Anda konten adalah di ini. jika URL adalah hilang dari src, itu’s Anda masalah, dan ini biasanya poin kembali untuk sebuah menggulir/mengklik trigger atau sebuah broken library.

“Check rendered HTML to make” (terjemahan) “Check rendered HTML to make” “Check the rendered HTML to make sure your” (terjemahan) “Check rendered HTML to make sure Anda”

untuk sebuah lazy-dimuat produk grid, go beyond ini presence periksa. Menjalankan Infinite Menggulir SEO testing matrix dengan standar dan tall viewports, fresh navigation dan post-muat resizing, no-tindakan dan incremental-scroll berjalan, unik product-tautan menghitung, dan accessibility-tree inspection. Resizing sebuah initialized halaman adalah tidak equivalent untuk navigating di akhir area pandang ukuran karena observers dan batch calculations dapat menjadi registered hanya selama startup. Evidence for this claim Google Search does not scroll or click to trigger lazy-loaded content, so implementations should not depend on user interaction and should expose resource URLs in rendered HTML. Scope: Google Search guidance for JavaScript-driven lazy loading. Confidence: high · Verified: Google Search Central: Lazy-load content

Anda dapat juga lean pada Anda web-performa tooling: PageSpeed Insights flags off-screen gambar Anda harus menjadi deferring. di my PageSpeed Insights panduan di Ahrefs I catatan itu “defer offscreen elements” (terjemahan) “defer offscreen elements” audit adalah telling Anda untuk lazy-muat gambar — sebuah handy cara untuk connect diagnostic Anda sudah menjalankan untuk fix.

peringkat-signal honesty

menjadi jelas tentang apa lazy memuat adalah dan bukan. menggunakan ini adalah tidak sebuah langsung peringkat faktor, dan tidak menggunakan ini bukan sebuah penalti. connection untuk rankings adalah indirect: ini alur melalui Core web Vitals (mainly LCP, terkadang INP untuk iframes) dan melalui crawlability, jika sebuah buruk implementation hides konten. Splitt characterized peringkat effect melalui Core web Vitals sebagai sebuah tiny, minute faktor dalam kebanyakan kasus. Jadi mengoptimalkan lazy memuat untuk Anda pengguna’ muat experience dan untuk murni pengindeksan — tidak karena Anda expect sebuah peringkat bump dari atribut itu sendiri.

Tempat ini fits

Lazy memuat adalah satu lever di broader web performa toolkit. ini pairs dengan resource hints (preload/preconnect untuk resources Anda melakukan ingin lebih awal), font-memuat strategy, caching, dan sebuah CDN — dan ini adalah judged, ultimately, melalui Core web Vitals. Mendapatkan above—fold/below—fold split tepat dan ini adalah satu dari cheapest wins available.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.