لِیزی لودینگ (Lazy Loading) چیست؟

Lazy Loading یا لِیزی لودینگ یکی از تکنیک‌های مهم برای بهینه‌سازی نحوه بارگذاری منابع در صفحات وب است. ایده اصلی آن ساده است: لازم نیست مرورگر تمام تصاویر، ویدئوها، iframeها و منابع غیرضروری یک صفحه را همان لحظه‌ای که کاربر وارد صفحه می‌شود دریافت کند.

در یک صفحه طولانی ممکن است ده‌ها تصویر، ویدئو، نقشه یا محتوای Embed وجود داشته باشد؛ در حالی که کاربر هنگام ورود فقط بخش بالایی صفحه را می‌بیند. Lazy Loading کمک می‌کند منابعی که در آن لحظه ضروری نیستند، تا زمانی که احتمال نیاز به آن‌ها بیشتر شود به تعویق بیفتند.

به زبان ساده، اگر کاربر هنوز به تصویر پایین صفحه نرسیده است، چرا مرورگر باید از همان ابتدا آن تصویر را دانلود کند؟

به همین دلیل Lazy Loading می‌تواند با کاهش بارگذاری غیرضروری در ابتدای صفحه، به بهبود تجربه اولیه کاربر و مدیریت بهتر منابع شبکه کمک کند. البته این تکنیک فقط زمانی مفید است که درست استفاده شود؛ Lazy کردن منابع مهم، به‌خصوص محتوای قابل مشاهده در اولین نمایش صفحه، می‌تواند نتیجه معکوس داشته باشد.

نحوه کار لیزی لودینگ و بارگذاری تدریجی منابع
نحوه کار لیزی لودینگ؛ منابع غیرضروری می‌توانند با نزدیک شدن کاربر به آن‌ها بارگذاری شوند.

Lazy Loading دقیقاً چه مشکلی را حل می‌کند؟

یکی از مشکلات صفحات وب سنگین این است که مرورگر ممکن است مجبور شود تعداد زیادی فایل را دریافت کند، در حالی که کاربر در همان ابتدای ورود فقط بخش کوچکی از صفحه را مشاهده می‌کند.

فرض کنید یک فروشگاه اینترنتی 40 محصول در یک صفحه دارد و هر محصول نیز یک تصویر 200 کیلوبایتی دارد. اگر همه تصاویر از همان ابتدا دریافت شوند، حجم قابل توجهی از داده مصرف خواهد شد؛ حتی اگر کاربر فقط چند محصول اول را ببیند و صفحه را ترک کند.

Lazy Loading با به تعویق انداختن بارگذاری منابع غیرضروری خارج از محدوده دید، این هزینه اولیه را کاهش می‌دهد. مرورگر می‌تواند منابع را زمانی دریافت کند که کاربر به آن بخش نزدیک شده و احتمال استفاده از آن بیشتر شده است.

البته Lazy Loading به این معنی نیست که مرورگر دقیقاً در لحظه‌ای که عنصر وارد صفحه شد، آن را دانلود می‌کند. در پیاده‌سازی بومی مرورگر، فاصله زمانی و فاصله عنصر تا Viewport بر اساس تصمیم مرورگر تعیین می‌شود.

بنابراین تعریف دقیق‌تر این است:

Lazy Loading یعنی به تعویق انداختن بارگذاری منابع غیرضروری تا زمانی که احتمال نیاز به آن‌ها بیشتر شود.

این تکنیک بیشتر در صفحاتی اهمیت پیدا می‌کند که تصاویر متعدد، گالری، ویدئو، نقشه، iframe یا سایر منابع سنگین دارند.

Lazy Loading چگونه کار می‌کند؟

هنگام باز شدن یک صفحه، مرورگر منابع مختلفی را برای ساخت و نمایش صفحه دریافت می‌کند. بعضی از این منابع برای نمایش اولیه ضروری هستند و بعضی دیگر در بخش‌های پایین‌تر صفحه قرار دارند.

در حالت عادی، منابع تصاویر و محتوای مختلف می‌توانند خیلی زود درخواست شوند. اما وقتی برای یک منبع از Lazy Loading استفاده می‌کنیم، به مرورگر اعلام می‌شود که این منبع فعلاً ضروری نیست و می‌توان دریافت آن را تا زمانی مناسب‌تر به تعویق انداخت.

برای مثال، اگر یک تصویر 1500 پیکسل پایین‌تر از بخش قابل مشاهده صفحه قرار گرفته باشد، نیازی نیست لزوماً در همان لحظه ورود کاربر دانلود شود. مرورگر می‌تواند زمانی که کاربر به آن بخش نزدیک می‌شود، فرایند دریافت تصویر را آغاز کند.

این موضوع باعث می‌شود منابع حیاتی‌تر در ابتدای بارگذاری، رقابت کمتری با تصاویر و محتوای غیرضروری داشته باشند.

Bytes saved by lazy loading images on Japanese Wikipedia
Bytes saved by lazy loading images on Japanese Wikipedia

چه عناصری را می‌توان Lazy Load کرد؟

اگرچه Lazy Loading بیشتر با تصاویر شناخته می‌شود، کاربرد آن فقط به تصاویر محدود نیست. بسته به نوع منبع و پشتیبانی مرورگر، می‌توان بارگذاری موارد مختلفی را به تعویق انداخت.

  • تصاویر
  • iframeها
  • برخی ویدئوها و محتوای چندرسانه‌ای
  • محتوای Embedded
  • برخی منابع غیرضروری در برنامه‌های وب

با این حال، هر منبعی که امکان Lazy Loading دارد، لزوماً نباید Lazy شود. مهم‌ترین معیار، میزان اهمیت آن منبع برای نمایش اولیه صفحه و تجربه کاربر است.

Lazy Loading تصاویر

یکی از ساده‌ترین کاربردهای Lazy Loading، تصاویر خارج از محدوده دید است.

<img
  src="product.jpg"
  alt="تصویر محصول"
  loading="lazy"
  width="800"
  height="600">

در این مثال مقدار loading="lazy" به مرورگر اعلام می‌کند که تصویر را به شکل Lazy مدیریت کند.

وجود width و height نیز اهمیت دارد، زیرا مرورگر می‌تواند فضای موردنیاز تصویر را پیش از دانلود آن بهتر محاسبه کند. این کار احتمال جابه‌جایی ناگهانی محتوای صفحه را کاهش می‌دهد.

Lazy Loading برای iframe

iframe برای نمایش محتوایی مانند نقشه، ویدئو یا یک صفحه خارجی استفاده می‌شود و در بعضی شرایط می‌تواند منابع قابل توجهی مصرف کند.

<iframe
  src="https://example.com"
  width="600"
  height="400"
  loading="lazy">
</iframe>

اگر iframe پایین صفحه قرار دارد و برای نمایش اولیه ضروری نیست، Lazy Loading می‌تواند انتخاب مناسبی باشد.

تفاوت Lazy Loading و Eager Loading چیست؟

در Lazy Loading، دریافت منبع تا زمانی که احتمال نیاز به آن بیشتر شود به تعویق می‌افتد.

در مقابل، Eager Loading به معنای بارگذاری معمول و بدون تأخیر Lazy است.

<img src="hero.jpg" loading="eager" alt="تصویر اصلی صفحه">

در مقابل:

<img src="gallery.jpg" loading="lazy" alt="تصویر گالری">

در عنصر img، حالت پیش‌فرض بارگذاری eager است. بنابراین برای بسیاری از تصاویر مهم نیازی نیست مقدار eager را به‌صورت دستی مشخص کنید؛ مهم‌تر این است که تصاویر غیرضروری را بی‌دلیل Lazy نکنید.

مهم‌ترین مزایای Lazy Loading چیست؟

کاهش بارگذاری اولیه

وقتی مرورگر مجبور نباشد تمام تصاویر و iframeهای پایین صفحه را از همان ابتدا دریافت کند، منابع اولیه صفحه سبک‌تر می‌شوند و منابع مهم می‌توانند با رقابت کمتری برای شبکه دریافت شوند.

کاهش مصرف پهنای باند

ممکن است کاربر هرگز به بخش‌های پایینی صفحه نرود. در چنین شرایطی، دانلود تصاویر آن قسمت‌ها از ابتدا می‌تواند مصرف غیرضروری داده ایجاد کند.

بهبود تجربه اولیه کاربر

هدف اصلی Lazy Loading این نیست که الزاماً تمام صفحه سریع‌تر دانلود شود؛ بلکه هدف این است که بخش‌هایی که کاربر ابتدا به آن‌ها نیاز دارد، زودتر آماده شوند و منابع غیرضروری بعداً دریافت شوند.

کاهش فشار اولیه روی شبکه و منابع

در صفحات سنگین، کاهش تعداد منابعی که هم‌زمان درخواست می‌شوند می‌تواند به مدیریت بهتر منابع شبکه و سرویس‌های شخص ثالث کمک کند.

آیا Lazy Loading همیشه سرعت سایت را افزایش می‌دهد؟

خیر. این یکی از مهم‌ترین نکات در استفاده از Lazy Loading است.

اگر Lazy Loading برای منابع غیرضروری و خارج از محدوده دید استفاده شود، می‌تواند به عملکرد اولیه کمک کند. اما اگر منابع حیاتی صفحه را Lazy کنیم، ممکن است همان منابعی که کاربر در اولین لحظه انتظار مشاهده آن‌ها را دارد، دیرتر دریافت شوند.

برای مثال تصور کنید تصویر اصلی یک صفحه فروشگاهی در بالای صفحه قرار دارد و بخش مهمی از تجربه اولیه کاربر است. اگر این تصویر را با loading="lazy" علامت‌گذاری کنیم، ممکن است دریافت آن بی‌دلیل به تأخیر بیفتد.

بنابراین سؤال درست این نیست که:

«چطور همه تصاویر سایت را Lazy کنیم؟»

بلکه باید بپرسیم:

«کدام منابع برای نمایش اولیه ضروری نیستند و می‌توان بارگذاری آن‌ها را به تعویق انداخت؟»

آیا تصویر اصلی صفحه باید Lazy Load شود؟

در حالت معمول، تصویر مهمی که در اولین Viewport قرار دارد نباید Lazy شود. این موضوع برای تصویر اصلی صفحه و به‌خصوص تصویری که می‌تواند عنصر LCP باشد اهمیت بیشتری دارد.

اگر یک تصویر در ابتدای صفحه قرار دارد و کاربر بدون اسکرول آن را می‌بیند، بهتر است مرورگر بتواند آن را بدون تأخیر اضافی دریافت کند.

در مقابل، تصاویر گالری، تصاویر محصولات پایین صفحه، تصاویر داخل مقالات طولانی و سایر تصاویر خارج از Viewport معمولاً گزینه‌های مناسب‌تری برای Lazy Loading هستند.

این تفاوت اهمیت زیادی دارد، زیرا استفاده افراطی از Lazy Loading می‌تواند به جای بهبود عملکرد، نمایش محتوای مهم را به تأخیر بیندازد.

Lazy Loading چه ارتباطی با Core Web Vitals دارد؟

Lazy Loading به خودی خود معادل «بهبود Core Web Vitals» نیست؛ بلکه یکی از ابزارهایی است که در صورت استفاده صحیح می‌تواند به مدیریت بهتر عملکرد صفحه کمک کند.

یکی از مهم‌ترین نکات، توجه به LCP یا Largest Contentful Paint است. اگر تصویر اصلی و بزرگ صفحه عنصر LCP باشد و آن را بدون دلیل Lazy کنیم، ممکن است نمایش این عنصر مهم دیرتر اتفاق بیفتد.

از طرف دیگر، تعیین نکردن ابعاد تصاویر می‌تواند باعث تغییر Layout هنگام دانلود تصویر شود. به همین دلیل استفاده از width و height برای تصاویر Lazy اهمیت ویژه‌ای دارد.

در نتیجه، استراتژی صحیح این است:

  • محتوای مهم و قابل مشاهده اولیه با تأخیر غیرضروری بارگذاری نشود.
  • منابع غیرضروری پایین صفحه Lazy شوند.
  • ابعاد تصاویر مشخص باشد.
  • خود تصاویر نیز از نظر حجم و ابعاد بهینه باشند.
  • نتیجه در موبایل و دسکتاپ آزمایش شود.

تفاوت Lazy Loading با بهینه‌سازی و فشرده‌سازی تصاویر چیست؟

این دو مفهوم نباید با یکدیگر اشتباه گرفته شوند.

فرض کنید یک تصویر 1 مگابایتی دارید.

اگر آن را فشرده کنید و حجم آن را به 150 کیلوبایت برسانید، هزینه دریافت خود فایل کاهش پیدا کرده است.

اما اگر همان تصویر را Lazy Load کنید، اندازه آن همچنان 1 مگابایت است؛ فقط دریافت آن به زمان دیگری موکول می‌شود.

بنابراین:

بهینه‌سازی تصویر = کاهش هزینه خود فایل

Lazy Loading = به تعویق انداختن زمان دریافت فایل

بهترین نتیجه زمانی حاصل می‌شود که این دو روش در کنار یکدیگر استفاده شوند. تصاویر باید با فرمت مناسب، اندازه مناسب و حجم منطقی ارائه شوند و تصاویر غیرضروری نیز در زمان مناسب بارگذاری شوند.

نقش width و height در Lazy Loading چیست؟

یکی از اشتباهات رایج این است که تصور کنیم Lazy Loading فقط به loading="lazy" محدود می‌شود.

فرض کنید مرورگر در حال نمایش یک مقاله است و تصویر پایین صفحه هنوز دانلود نشده است. اگر ابعاد تصویر مشخص نباشد، ممکن است بعد از دانلود تصویر، ارتفاع محتوای صفحه تغییر کند و متن جابه‌جا شود.

برای جلوگیری از این وضعیت، بهتر است ابعاد تصاویر مشخص باشند:

<img
  src="mountain.jpg"
  alt="نمای کوهستان"
  loading="lazy"
  width="1200"
  height="800">

با این کار مرورگر می‌تواند نسبت تصویر و فضای موردنیاز آن را از قبل در Layout در نظر بگیرد.

نحوه پیاده‌سازی Lazy Loading با HTML

برای بسیاری از سناریوهای معمول، قابلیت بومی مرورگر کافی است و نیازی به نوشتن JavaScript اختصاصی ندارید.

یک نمونه ساده:

<img
  src="tour.jpg"
  alt="تصویر طبیعت"
  loading="lazy"
  width="1200"
  height="800">

در این کد:

  • loading="lazy" رفتار Lazy Loading را مشخص می‌کند.
  • alt توضیح متنی تصویر است.
  • width و height فضای تصویر را مشخص می‌کنند.

برای iframe نیز می‌توان از روش مشابه استفاده کرد:

<iframe
  src="https://example.com"
  width="600"
  height="400"
  loading="lazy">
</iframe>

آیا برای Lazy Loading به JavaScript نیاز داریم؟

برای استفاده معمول از Lazy Loading تصاویر و iframeهای پشتیبانی‌شده، در بسیاری از موارد نیازی به JavaScript اختصاصی ندارید. مرورگرهای مدرن قابلیت بومی loading="lazy" را در اختیار توسعه‌دهنده قرار می‌دهند.

این روش نسبت به پیاده‌سازی‌های قدیمی ساده‌تر است و وابستگی به کتابخانه‌های اضافی را کاهش می‌دهد.

JavaScript زمانی می‌تواند مفید باشد که نیاز به کنترل سفارشی داشته باشید؛ برای مثال وقتی می‌خواهید منابع خاصی را بر اساس شرایط پیچیده‌تر بارگذاری کنید یا یک سیستم قدیمی را با مرورگرهای فاقد پشتیبانی مناسب سازگار کنید.

Intersection Observer چیست و چه ارتباطی با Lazy Loading دارد؟

قبل از فراگیر شدن Lazy Loading بومی مرورگرها، یکی از روش‌های رایج برای پیاده‌سازی Lazy Loading استفاده از Intersection Observer API بود.

این API به JavaScript اجازه می‌دهد تشخیص دهد یک عنصر چه زمانی وارد محدوده دید یا محدوده مشخصی از صفحه شده است.

یک نمونه ساده:

const images = document.querySelectorAll('.lazy-image');

const observer = new IntersectionObserver((entries, observer) => {
  entries.forEach(entry => {
    if (!entry.isIntersecting) return;

    const image = entry.target;
    image.src = image.dataset.src;

    observer.unobserve(image);
  });
});

images.forEach(image => observer.observe(image));

در پروژه‌های جدید، اگر نیاز شما فقط Lazy Loading استاندارد تصاویر یا iframeها باشد، استفاده از قابلیت بومی مرورگر معمولاً راهکار ساده‌تری است. JavaScript بیشتر برای سناریوهای سفارشی ارزش پیدا می‌کند.

Lazy Loading در وردپرس چگونه انجام می‌شود؟

وردپرس از سال‌ها قبل قابلیت Lazy Loading بومی تصاویر را در هسته خود قرار داده است؛ بنابراین در بسیاری از سایت‌های وردپرسی برای استفاده پایه از Lazy Loading نیازی به نصب افزونه جداگانه نیست.

با این حال، باید توجه داشت که فعال بودن Lazy Loading در وردپرس به معنای آن نیست که تمام تصاویر صفحه باید بدون بررسی Lazy شوند.

در یک سایت وردپرسی بهتر است بعد از پیاده‌سازی بررسی کنید:

  • تصویر اصلی صفحه به شکل غیرضروری Lazy نشده باشد.
  • تصاویر پایین صفحه به‌درستی Lazy شوند.
  • ابعاد تصاویر مشخص باشند.
  • تصاویر در موبایل و دسکتاپ درست نمایش داده شوند.
  • افزونه‌های مختلف روی یک عنصر رفتار متناقض ایجاد نکنند.
  • تصاویر و منابع مهم در ابزارهای Performance با تأخیر غیرضروری مواجه نشده باشند.

بنابراین در وردپرس نیز هدف نباید فقط «فعال کردن Lazy Loading» باشد؛ هدف، مدیریت صحیح استراتژی بارگذاری منابع است.

آیا برای Lazy Loading در وردپرس افزونه نصب کنیم؟

در بسیاری از سایت‌ها پاسخ خیر است. اگر هدف فقط Lazy Loading استاندارد تصاویر باشد، قابلیت‌های داخلی وردپرس و مرورگر می‌توانند کافی باشند.

افزونه زمانی کاربرد بیشتری پیدا می‌کند که علاوه بر Lazy Loading، به امکاناتی مانند فشرده‌سازی تصاویر، تبدیل فرمت، کش، CDN، بهینه‌سازی ویدئوها یا مدیریت منابع دیگر نیاز داشته باشید.

نکته مهم این است که چند ابزار نباید بدون بررسی یک کار مشابه را انجام دهند. برای مثال اگر قالب، افزونه بهینه‌سازی و یک اسکریپت سفارشی هم‌زمان روی تصاویر کنترل داشته باشند، احتمال ایجاد رفتار غیرقابل پیش‌بینی افزایش پیدا می‌کند.

Lazy Loading برای ویدئو مناسب است؟

بله، اما باید بین ویدئوی واقعی و ویدئوی Embedded تفاوت قائل شد.

اگر یک ویدئو در پایین صفحه قرار دارد و کاربر در ابتدای ورود نیازی به آن ندارد، می‌توان بارگذاری منابع آن را به تعویق انداخت.

برای ویدئوهای HTML5 می‌توان از ویژگی‌هایی مانند preload استفاده کرد:

<video controls preload="none" poster="poster.jpg">
  <source src="video.webm" type="video/webm">
  <source src="video.mp4" type="video/mp4">
</video>

مقدار preload="none" به مرورگر اعلام می‌کند که ویدئو از ابتدا به شکل کامل دریافت نشود.

برای ویدئوهای خارجی مانند ویدئویی که از طریق iframe نمایش داده می‌شود نیز می‌توان از Lazy Loading iframe استفاده کرد.

Lazy Loading برای نقشه و محتوای Embed

نقشه‌های تعاملی، ویدئوهای خارجی و بعضی سرویس‌های شخص ثالث می‌توانند منابع زیادی را وارد صفحه کنند.

فرض کنید صفحه یک شرکت در پایین صفحه یک نقشه تعاملی دارد. کاربری که هنوز متن صفحه را نخوانده، ممکن است در همان لحظه ورود هیچ نیازی به دریافت منابع نقشه نداشته باشد.

در چنین شرایطی Lazy Loading iframe می‌تواند انتخاب مناسبی باشد.

حتی در بعضی پروژه‌ها می‌توان ابتدا یک تصویر ثابت یا Preview سبک نمایش داد و نسخه تعاملی را زمانی بارگذاری کرد که کاربر به آن بخش نزدیک شده یا روی آن کلیک کرده است.

آیا Lazy Loading روی سئو تأثیر دارد؟

Lazy Loading به خودی خود یک فاکتور مستقیم رتبه‌بندی نیست. اما می‌تواند بخشی از استراتژی بهینه‌سازی فنی سایت و عملکرد صفحه باشد.

نکته مهم‌تر، نحوه پیاده‌سازی آن است. اگر محتوای مهم فقط بعد از یک تعامل خاص کاربر بارگذاری شود و موتور جست‌وجو نتواند آن را به شکل مناسب مشاهده کند، ممکن است مشکلاتی در Crawl یا Index شدن محتوا ایجاد شود.

برای تصاویر، استفاده از عنصر استاندارد <img> و قرار دادن URL تصویر در src روش مناسب‌تری برای قابل‌کشف بودن تصویر است.

همچنین نباید محتوای مهم و قابل مشاهده اولیه را فقط به دلیل استفاده از Lazy Loading به تأخیر انداخت.

آیا Lazy Loading باعث افزایش رتبه گوگل می‌شود؟

خیر، نمی‌توان گفت فعال کردن Lazy Loading به صورت مستقیم باعث افزایش رتبه می‌شود.

ارزش Lazy Loading در این است که می‌تواند به مدیریت بهتر منابع، کاهش دانلودهای غیرضروری و بهبود تجربه بارگذاری کمک کند. اما رتبه‌بندی سایت به مجموعه‌ای از عوامل وابسته است و Lazy Loading به تنهایی جایگزین بهینه‌سازی کامل سایت نیست.

بنابراین بهتر است Lazy Loading را بخشی از استراتژی سئو و Performance بدانیم، نه یک تکنیک مستقل برای افزایش رتبه.

تفاوت Lazy Loading و Preload چیست؟

این دو تکنیک تقریباً در دو جهت متفاوت عمل می‌کنند.

Preload برای منابعی مناسب است که احتمال می‌دهیم خیلی زود به آن‌ها نیاز داریم و می‌خواهیم مرورگر از قبل برای دریافت آن‌ها آماده شود.

Lazy Loading برای منابعی کاربرد دارد که در حال حاضر ضروری نیستند و می‌توان دریافت آن‌ها را عقب انداخت.

بنابراین یک صفحه می‌تواند هم‌زمان از هر دو استراتژی استفاده کند:

منابع مهم را زودتر دریافت کن؛ منابع غیرضروری را دیرتر دریافت کن.

Lazy Loading و fetchpriority چه تفاوتی دارند؟

ویژگی loading بیشتر به زمان مناسب برای دریافت یک منبع مربوط است، در حالی که fetchpriority یک راهنمای اولویت‌دهی به مرورگر برای دریافت منبع محسوب می‌شود.

برای مثال اگر تصویر مهم صفحه باید سریع‌تر دریافت شود، در شرایط مناسب می‌توان از:

<img
  src="hero.jpg"
  alt="تصویر اصلی صفحه"
  fetchpriority="high"
  width="1200"
  height="700">

استفاده کرد.

اما نباید صرفاً برای امتیاز گرفتن از ابزارهای تست Performance، همه تصاویر را با fetchpriority="high" مشخص کرد. هدف اصلی، تعیین درست اولویت منابع است.

آیا Lazy Loading با بهینه‌سازی تصاویر جایگزین می‌شود؟

خیر.

اگر یک تصویر 3 مگابایتی باشد، Lazy Loading فقط زمان دریافت آن را عقب می‌اندازد و حجم 3 مگابایتی فایل را کاهش نمی‌دهد.

برای بهینه‌سازی واقعی تصویر باید مواردی مانند موارد زیر نیز بررسی شوند:

  • انتخاب فرمت مناسب مانند WebP یا AVIF در شرایط مناسب
  • فشرده‌سازی تصویر
  • انتخاب ابعاد مناسب
  • استفاده از تصاویر واکنش‌گرا با srcset و sizes
  • عدم استفاده از تصویر بزرگ‌تر از نیاز واقعی صفحه

بنابراین Lazy Loading فقط یکی از قطعات پازل Performance است.

اشتباهات رایج در استفاده از Lazy Loading

1. Lazy کردن تمام تصاویر سایت

این کار ساده به نظر می‌رسد اما همیشه درست نیست. تصاویر مهم بالای صفحه باید جداگانه بررسی شوند و تصاویر پایین صفحه معمولاً گزینه مناسب‌تری برای Lazy Loading هستند.

2. Lazy کردن تصویر LCP

اگر تصویر اصلی صفحه عنصر LCP باشد، Lazy کردن آن می‌تواند دریافت و نمایش آن را به تأخیر بیندازد.

3. تصور کاهش حجم تصویر

Lazy Loading حجم فایل را کاهش نمی‌دهد. برای این کار باید تصویر را فشرده و با ابعاد و فرمت مناسب ارائه کرد.

4. مشخص نکردن ابعاد تصویر

نداشتن ابعاد مناسب می‌تواند هنگام بارگذاری تصویر باعث تغییر Layout شود.

5. استفاده غیرضروری از JavaScript

برای نیازهای استاندارد، قابلیت بومی مرورگر معمولاً کافی است و اضافه کردن اسکریپت پیچیده همیشه مزیتی ایجاد نمی‌کند.

6. تست نکردن سایت روی موبایل

رفتار Lazy Loading و هزینه منابع در موبایل می‌تواند اهمیت بیشتری داشته باشد. بنابراین نتیجه باید روی دستگاه‌های مختلف بررسی شود.

7. استفاده هم‌زمان از چند سیستم Lazy Loading

اگر قالب، افزونه Performance، CDN و JavaScript سفارشی هم‌زمان رفتار تصاویر را تغییر دهند، احتمال تداخل بیشتر می‌شود.

چگونه بفهمیم Lazy Loading درست پیاده‌سازی شده است؟

فعال کردن Lazy Loading پایان کار نیست. باید نتیجه واقعی آن را بررسی کرد.

ابتدا صفحه را با کش پاک‌شده یا در حالت ناشناس باز کنید. سپس بررسی کنید منابع مهم ابتدای صفحه سریع نمایش داده می‌شوند یا خیر.

بعد از آن به تدریج در صفحه اسکرول کنید و ببینید تصاویر و iframeهای پایین صفحه در زمان مناسبی درخواست می‌شوند.

همچنین موارد زیر را بررسی کنید:

  • آیا تصویر اصلی صفحه بدون تأخیر غیرضروری نمایش داده می‌شود؟
  • آیا تصاویر پایین صفحه فقط زمانی که لازم هستند دریافت می‌شوند؟
  • آیا هنگام ظاهر شدن تصاویر، Layout جابه‌جا می‌شود؟
  • آیا تصاویر در موبایل به‌درستی نمایش داده می‌شوند؟
  • آیا iframeهای غیرضروری در ابتدای صفحه منابع زیادی مصرف نمی‌کنند؟
  • آیا درخواست‌های شبکه غیرضروری در شروع صفحه کاهش یافته‌اند؟

Lazy Loading را با چه ابزارهایی بررسی کنیم؟

برای بررسی فنی Lazy Loading می‌توان از ابزارهای مختلف استفاده کرد.

Chrome DevTools

در بخش Network می‌توانید زمان ارسال درخواست تصاویر و سایر منابع را بررسی کنید. با اسکرول کردن صفحه نیز می‌توانید مشاهده کنید که چه زمانی تصاویر پایین صفحه درخواست می‌شوند.

PageSpeed Insights

PageSpeed Insights می‌تواند درباره منابع سنگین، عملکرد صفحه، تصاویر و برخی مشکلات مرتبط با بارگذاری اطلاعات ارائه دهد.

Lighthouse

Lighthouse نیز برای بررسی Performance و مشکلات مرتبط با منابع غیرضروری مفید است.

اما یک نکته مهم وجود دارد: نباید فقط یک امتیاز عددی را ملاک تصمیم‌گیری قرار دهید. اگر یک ابزار امتیاز خوبی نشان دهد اما کاربر در عمل با تأخیر تصویر اصلی مواجه شود، استراتژی بارگذاری شما نیاز به بررسی بیشتری دارد.

Impact of lazy loading images in beta in production on Barack Obama page
Impact of lazy loading images in beta in production on Barack Obama page

Lazy Loading برای چه سایت‌هایی اهمیت بیشتری دارد؟

تأثیر Lazy Loading در همه سایت‌ها یکسان نیست.

اگر سایت یک صفحه ساده با چند تصویر کوچک داشته باشد، ممکن است اجرای Lazy Loading تأثیر قابل توجهی ایجاد نکند.

اما در سایت‌هایی مانند موارد زیر اهمیت آن بیشتر می‌شود:

  • فروشگاه‌های اینترنتی با تعداد زیادی محصول
  • سایت‌های خبری با تصاویر متعدد
  • وب‌سایت‌های گردشگری و مجلات تصویری
  • سایت‌های نمونه‌کار و عکاسی
  • صفحات دارای گالری‌های بزرگ
  • سایت‌های دارای ویدئو و محتوای Embedded
  • صفحات طولانی با تعداد زیادی تصویر

در این سایت‌ها مدیریت زمان دریافت منابع می‌تواند تأثیر بیشتری روی تجربه اولیه کاربر داشته باشد.

یک مثال واقعی برای پیاده‌سازی Lazy Loading

فرض کنید یک سایت آموزشی مقاله‌ای با عنوان «آموزش تهیه غذاهای ایتالیایی» منتشر کرده است.

صفحه شامل یک تصویر اصلی در ابتدای مقاله، چند تصویر از مواد اولیه، تصاویر مرحله‌به‌مرحله، یک ویدئوی آموزشی و یک نقشه در پایین صفحه است.

در این شرایط، بهتر است تصویر اصلی بدون تأخیر غیرضروری بارگذاری شود؛ زیرا کاربر آن را در همان ابتدای صفحه می‌بیند.

تصاویر مراحل بعدی که پایین‌تر قرار دارند می‌توانند Lazy باشند.

ویدئوی پایین صفحه نیز می‌تواند با توجه به نحوه پیاده‌سازی، با بارگذاری تأخیری مدیریت شود.

نقشه نیز اگر در پایین صفحه قرار دارد، می‌تواند با loading="lazy" در iframe بارگذاری شود.

این مثال نشان می‌دهد که Lazy Loading یک گزینه ساده «روشن یا خاموش» برای کل سایت نیست؛ بلکه باید برای هر منبع بر اساس اهمیت، موقعیت و زمان موردنیاز تصمیم‌گیری کرد.

بهترین روش استفاده از Lazy Loading چیست؟

اگر بخواهیم یک فرایند عملی برای اجرای Lazy Loading داشته باشیم، بهتر است مراحل زیر را دنبال کنیم:

  1. منابع مهم و قابل مشاهده در اولین Viewport را مشخص کنید.
  2. تصاویر و منابع غیرضروری پایین صفحه را شناسایی کنید.
  3. منابع غیرضروری را با Lazy Loading مدیریت کنید.
  4. برای تصاویر ابعاد مناسب مشخص کنید.
  5. تصاویر را از نظر حجم، فرمت و اندازه بهینه کنید.
  6. تصویر اصلی و عنصر LCP را بی‌دلیل Lazy نکنید.
  7. iframeها و محتوای شخص ثالث غیرضروری را بررسی کنید.
  8. عملکرد صفحه را در موبایل و دسکتاپ آزمایش کنید.
  9. در DevTools درخواست‌های شبکه را بررسی کنید.
  10. بعد از هر تغییر، نتیجه واقعی را با ابزارهای Performance و تجربه کاربر مقایسه کنید.

این روش بسیار بهتر از راهکار ساده «Lazy Loading را برای همه تصاویر فعال کن» است.

Lazy Loading و سئو تصاویر چه ارتباطی دارند؟

اگر تصاویر برای سایت اهمیت دارند، باید علاوه بر زمان بارگذاری، امکان کشف و پردازش آن‌ها توسط موتورهای جست‌وجو نیز در نظر گرفته شود.

استفاده از عنصر استاندارد <img>، قرار دادن URL واقعی تصویر در src، نوشتن alt مناسب و استفاده از تصاویر باکیفیت و بهینه، بخش‌های مهمی از سئو تصاویر هستند.

Lazy Loading نباید به شکلی پیاده‌سازی شود که تصویر یا محتوای مهم فقط پس از یک کلیک یا تعامل غیرضروری کاربر ایجاد شود.

در پیاده‌سازی‌های سفارشی JavaScript نیز باید مطمئن شد که محتوای مهم در HTML رندرشده قابل دسترسی است و موتور جست‌وجو می‌تواند آن را مشاهده و پردازش کند.

آیا Lazy Loading برای همه تصاویر یک صفحه مناسب است؟

خیر.

یک استراتژی مناسب معمولاً شامل ترکیبی از بارگذاری عادی و Lazy Loading است.

نوع منبعاستراتژی پیشنهادیدلیل
تصویر اصلی و قابل مشاهده صفحهمعمولاً بدون Lazyبرای نمایش سریع محتوای مهم
تصاویر پایین صفحهLazy Loadingعدم نیاز فوری
تصاویر گالری طولانیLazy Loadingکاهش بارگذاری غیرضروری
iframe پایین صفحهLazy Loadingکاهش بارگذاری محتوای شخص ثالث
ویدئوی پایین صفحهبارگذاری تأخیری مناسبکاهش مصرف منابع اولیه
تصویر مهم مورد استفاده برای LCPمعمولاً بدون Lazyجلوگیری از تأخیر در نمایش عنصر مهم

چک‌لیست کاربردی Lazy Loading

موردوضعیت مناسب
تصاویر پایین صفحهLazy Loading
تصاویر خارج از ViewportLazy Loading
تصاویر مهم بالای صفحهبررسی جداگانه
تصویر LCPمعمولاً بدون Lazy
iframeهای پایین صفحهمناسب برای Lazy Loading
ویدئوی غیرضروری در ابتدای صفحهبارگذاری تأخیری مناسب
width و height تصاویرتوصیه‌شده
فشرده‌سازی تصاویرضروری و مستقل از Lazy Loading
فرمت مناسب تصویرتوصیه‌شده
تست موبایلضروری
بررسی Networkضروری
بررسی Layout Shiftضروری
بررسی منابع حیاتیقبل از انتشار

سوالات متداول درباره Lazy Loading

Lazy Loading به زبان ساده چیست؟

Lazy Loading یعنی بارگذاری منابع غیرضروری را تا زمانی که احتمال نیاز به آن‌ها بیشتر شود به تعویق بیندازیم. این روش بیشتر برای تصاویر، iframeها و برخی منابع چندرسانه‌ای خارج از محدوده دید استفاده می‌شود.

آیا Lazy Loading سرعت سایت را افزایش می‌دهد؟

در صفحات سنگین، Lazy Loading منابع غیرضروری می‌تواند حجم بارگذاری اولیه را کاهش دهد و به مدیریت بهتر منابع کمک کند؛ اما اگر منابع مهم صفحه را Lazy کنید، ممکن است نتیجه برعکس شود.

آیا باید همه تصاویر را Lazy Load کنیم؟

خیر. تصاویر غیرضروری و خارج از محدوده دید معمولاً گزینه‌های مناسبی هستند، اما تصاویر مهم و قابل مشاهده در اولین Viewport، به‌خصوص تصویر LCP، نباید بدون بررسی Lazy شوند.

آیا Lazy Loading روی سئو تأثیر دارد؟

Lazy Loading یک فاکتور مستقیم رتبه‌بندی نیست، اما می‌تواند بخشی از استراتژی بهینه‌سازی عملکرد سایت باشد. در عین حال باید مطمئن شوید که محتوای مهم و تصاویر موردنظر موتورهای جست‌وجو به‌درستی قابل کشف و پردازش هستند.

آیا Lazy Loading در وردپرس قابل استفاده است؟

بله. وردپرس از Lazy Loading بومی تصاویر پشتیبانی می‌کند و در بسیاری از سایت‌ها برای استفاده پایه نیازی به افزونه جداگانه نیست. با این حال، نتیجه نهایی باید از نظر عملکرد و جلوگیری از Lazy شدن منابع مهم بررسی شود.

آیا Lazy Loading حجم تصویر را کاهش می‌دهد؟

خیر. Lazy Loading زمان دریافت تصویر را تغییر می‌دهد، اما اندازه فایل را کاهش نمی‌دهد. برای کاهش حجم باید از فشرده‌سازی، فرمت مناسب، ابعاد صحیح و تصاویر واکنش‌گرا استفاده کرد.

آیا می‌توان iframe را Lazy Load کرد؟

بله. ویژگی loading="lazy" برای iframe نیز قابل استفاده است و برای iframeهایی که در ابتدا خارج از محدوده دید هستند می‌تواند به کاهش بارگذاری اولیه کمک کند.

آیا Lazy Loading نیاز به JavaScript دارد؟

برای Lazy Loading استاندارد تصاویر و iframeهای پشتیبانی‌شده، معمولاً نیازی به JavaScript اختصاصی نیست. JavaScript و Intersection Observer بیشتر زمانی کاربرد دارند که به کنترل سفارشی نیاز داشته باشید.

آیا Lazy Loading برای تصویر اصلی سایت مناسب است؟

معمولاً خیر. اگر تصویر اصلی در اولین Viewport قرار دارد یا عنصر مهمی مانند LCP است، Lazy کردن آن می‌تواند نمایش تصویر را به تأخیر بیندازد. در چنین شرایطی بهتر است بارگذاری آن با اولویت مناسب انجام شود.

آیا Lazy Loading جایگزین فشرده‌سازی تصاویر است؟

خیر. این دو تکنیک مکمل یکدیگر هستند. فشرده‌سازی حجم فایل را کاهش می‌دهد و Lazy Loading زمان دریافت فایل را مدیریت می‌کند.

جمع‌بندی؛ Lazy Loading چیست و چه زمانی باید از آن استفاده کنیم؟

Lazy Loading یا لِیزی لودینگ تکنیکی برای به تعویق انداختن بارگذاری منابع غیرضروری یک صفحه تا زمانی است که احتمال نیاز به آن‌ها بیشتر شود.

مهم‌ترین کاربرد آن در تصاویر، iframeها، ویدئوها و محتوای غیرضروری خارج از محدوده دید است. استفاده صحیح از این تکنیک می‌تواند حجم بارگذاری اولیه را کاهش دهد و به مرورگر اجازه دهد منابع مهم‌تر را زودتر مدیریت کند.

اما یک نکته را نباید فراموش کرد: Lazy Loading هرچه بیشتر، لزوماً به معنای Performance بهتر نیست.

اگر تصویر اصلی صفحه، عنصر LCP یا یک منبع ضروری را Lazy کنیم، ممکن است نتیجه معکوس شود و محتوایی که کاربر باید سریع ببیند دیرتر نمایش داده شود.

از طرف دیگر، اگر در یک صفحه طولانی ده‌ها تصویر، ویدئو، iframe یا محتوای شخص ثالث وجود داشته باشد، بارگذاری همه این منابع از همان ابتدا می‌تواند کاملاً غیرضروری باشد.

بنابراین استراتژی صحیح را می‌توان در یک جمله خلاصه کرد:

منابع ضروری را در زمان مناسب و بدون تأخیر غیرضروری بارگذاری کنید و منابع غیرضروری را تا زمان نیاز به تعویق بیندازید.

همچنین باید توجه داشت که Lazy Loading جایگزین بهینه‌سازی تصاویر نیست. فشرده‌سازی، انتخاب فرمت مناسب، تعیین ابعاد صحیح، استفاده از تصاویر واکنش‌گرا، مدیریت iframeها و بررسی Core Web Vitals همگی باید در کنار یکدیگر دیده شوند.

در نهایت، Lazy Loading زمانی بیشترین ارزش را دارد که بخشی از یک استراتژی کامل بهینه‌سازی سرعت و عملکرد سایت باشد؛ نه اینکه صرفاً یک گزینه در افزونه یا قالب فعال شود و بدون آزمایش رها شود.

برای یک وب‌سایت حرفه‌ای، هدف این نیست که همه منابع دیرتر دانلود شوند؛ هدف این است که منابع درست، در زمان درست و با کمترین هزینه ممکن در اختیار کاربر قرار بگیرند.

اگر برای بهینه‌سازی سرعت، Lazy Loading، Core Web Vitals یا سایر مشکلات فنی سایت خود نیاز به بررسی و اجرا دارید، می‌توانید با کارشناسان پشتیبانی سایت در پرشیا وب در تماس باشید.

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

پیمایش به بالا