آیا تا به حال به این فکر کردهاید که صفحات سایتتان با سرعت لود شدن، بازدیدکنندگان را از دست میدهند؟ در وردپرس، فعالسازی lazy load میتواند زمان بارگذاری را به طور چشمگیری کاهش دهد و تجربه کاربری را بهبود بخشد. در این مقاله، بهصورت گام به گام، روشهای پیادهسازی lazy load را با استفاده از افزونههای معتبر و بدون افزونه شرح میدهیم.
هر مرحله با نکات عملی و هشدارهای رایج همراه است تا از بروز خطاهای رایج در تنظیمات جلوگیری کنید. پس از پایان خواندن، قادر خواهید شد بهراحتی هر تصویر یا ویدئوی سایتتان را بهصورت هوشمندانه بارگذاری کنید و سرعت سایت را بهینه کنید.
فهرست مطالب
- مفهوم لیزی لود در وردپرس
- فعالسازی لیزی لود از طریق هسته
- نصب افزونه لیزی لود معتبر
- پیکربندی افزونه برای حداکثر سرعت
- تست عملکرد لیزی لود با ابزارهای وب
- رفع مشکلات رایج پس از فعالسازی
- سوالات متداول
مفهوم لیزی لود در وردپرس
درک صحیح مفهوم لیزی لود (بارگذاری تنبل) برای بهینهسازی سرعت سایت وردپرسی ضروری است. بهجای اینکه همهٔ تصاویر، ویدیوها و iframeها بهمحض بارگذاری صفحه دانلود شوند، لیزی لود تنها زمانی این منابع را میآورد که کاربر به آنها نزدیک میشود یا اسکرول میکند. این کار باعث کاهش زمان اولین نمایش (TTFB) و بهبود تجربه کاربری میشود؛ بهویژه در دستگاههای موبایل که پهنای باند محدودتر است.
مکانیسم اصلی لیزی لود بر پایهٔ مشاهدۀ viewport (قاب نمایش) مرورگر است. وقتی یک عنصر تصویری خارج از محدودهٔ قابل مشاهده قرار دارد، بهجای دریافت کامل فایل تصویری، فقط یک placeholder (مانند یک تصویر شفاف یا سایه خاکستری) ارسال میشود. سپس با استفاده از JavaScript، زمانی که این عنصر بهتدریج وارد viewport میشود، درخواست واقعی به سرور ارسال و تصویر واقعی بارگذاری میشود. این فرآیند بهصورت خودکار توسط مرورگرهای مدرن پشتیبانی میشود، ولی برای سازگاری بهتر میتوان از کتابخانههای کمحجم مثل lazysizes یا ویژگی بومی loading="lazy" استفاده کرد.
| قبل از لیزی لود | بعد از لیزی لود |
|---|---|
| تمام تصاویر بهصورت همزمان دانلود میشوند | تنها تصاویر در viewport بلافاصله دانلود میشوند |
| زمان بارگذاری صفحه بهطور قابل توجهی طولانی است | زمان رندر اولیه کاهش مییابد، کاربران سریعتر به محتوا دسترسی پیدا میکنند |
| مصرف باند بالاتر، بهویژه برای کاربران موبایل | صرفهجویی در باند، بهویژه در شبکههای کمسرعت |
بهعنوان مثال، یک وبلاگ خبری با ۲۵ تصویر در هر پست، اگر لیزی لود فعال نباشد، تمام این تصاویر همزمان درخواست میشوند؛ در حالی که با فعالسازی لیزی لود، در اولین بازدید فقط ۳‑۴ تصویر (که در بالای صفحه هستند) دانلود میشوند و بقیه تا زمانی که کاربر به انتهای مطلب اسکرول کند، بارگذاری میشوند. این تغییر میتواند سرعت بارگذاری اولیه را تا ۴۰۰ میلیثانیه کاهش دهد.
نکتهٔ عملی: اگر از Gutenberg یا بلوکهای کلاسیک استفاده میکنید، اطمینان حاصل کنید که ویژگی loading="lazy" بهصورت پیشفرض بر روی تگهای اضافه شده باشد. در صورتی که این ویژگی فعال نیست، میتوانید با افزودن یک فیلتر ساده در فایل functions.php بهسرعت آن را فعال کنید. این کار بدون نیاز به نصب افزونه، بهرهوری لیزی لود را در تمام تمها و افزونههای سفارشی تضمین میکند.
فعالسازی لیزی لود از طریق هسته
قابلیت لیزی لود (بارگذاری تنبل) بهصورت بومی در هستهٔ وردپرس از نسخه 5.5 بهبعد فعال شد. این ویژگی بدون نیاز به افزونهٔ خارجی، بهصورت خودکار برای تمام و ‑های صفحه، ویژگی loading="lazy" را اضافه میکند. در عمل، مرورگر فقط زمانی این عناصر را بارگذاری میکند که کاربر بهنزدیکی آنها اسکرول کند، که منجر به کاهش زمان لود اولیه و بهبود امتیاز Core Web Vitals میشود.
اگر تم یا افزونهٔ شما این قابلیت را بهصورت پیشفرض فعال نکرده، میتوانید بهدو روش زیر آن را روشن کنید:
- از طریق پیشخوان: به تنظیمات → رسانه بروید و گزینهٔ «بارگذاری تنبل برای تصاویر» را فعال کنید (در برخی قالبها ممکن است این گزینه مخفی باشد).
- از طریق کد: در فایل
functions.phpیا یک افزونهٔ مخصوص سایت، خط زیر را اضافه کنید:add_filter( 'wp_lazy_loading_enabled', '__return_true' );
پس از فعالسازی، وردپرس بهصورت خودکار به تمام تگهای img و iframe ویژگی loading="lazy" میافزاید. این کار بهویژه برای صفحات حاوی گالریهای بزرگ، ویدئوهای تعبیهشده یا بنرهای تصویری مفید است؛ زیرا مرورگر تا زمانی که کاربر بهنزدیک آنها نرسد، درخواست دانلود تصویر را ارسال نمیکند. بهخاطر داشته باشید که این ویژگی فقط در مرورگرهای مدرن (Chromium، Firefox، Safari جدید) پشتیبانی میشود؛ برای مرورگرهای قدیمیتر، رفتار بهصورت پیشفرض عادی میماند.
در مواردی ممکن است تم یا افزونهای دیگر نیز بهصورت جداگانه لیزی لود را پیادهسازی کند و این باعث افزودن دو بار ویژگی loading="lazy" یا تداخل با کتابخانههای جاوااسکریپتی مانند lazyload.js شود. برای جلوگیری از این تداخل، میتوانید یکی از روشها را غیرفعال کنید: یا فیلتر هسته را حذف کنید (remove_filter('wp_lazy_loading_enabled','__return_true');) یا تنظیمات افزونهٔ مربوطه را به «غیرفعال» تغییر دهید. همچنین، اگر میخواهید برخی تصاویر خاص (مثلاً لوگوی سایت) همیشه بلافاصله بارگذاری شوند، میتوانید با افزودن کلاس skip-lazy به تگ img، این ویژگی را نادیده بگیرید.
| نکته | روش فعالسازی | مزایا |
|---|---|---|
| فعالسازی از پیشخوان | تنظیمات → رسانه | بدون کد، مناسب کاربران غیرفنی |
| فعالسازی از طریق کد | افزودن فیلتر به functions.php | قابلیت کنترل دقیقتر و امکان شرطیسازی |
| حذف تداخل | غیرفعالکردن افزونههای لیزی لود دیگر یا حذف فیلتر | پیشگیری از بارگذاری دوباره و خطاهای جاوااسکریپت |
نصب افزونه لیزی لود معتبر
برای فعالسازی لیزیلود بهصورت مطمئن، نخست باید یک افزونه پایدار و بهروز انتخاب کنید. افزونههای مشهور مثل Lazy Load by WP Rocket یا a3 Lazy Load بهدلیل بهینهسازیهای مستمر و سازگاری با قالبهای رایج، گزینههای امنی هستند. این افزونهها بهصورت خودکار تصاویر، iframe و ویدئوهای داخل پستها را تا زمانی که کاربر به آنها اسکرول کند، بارگذاری نمیکنند؛ در نتیجه زمان لود صفحه بهطور قابلتوجهی کاهش مییابد.
نصب افزونه از طریق پیشخوان وردپرس بهسادگی زیر انجام میشود:
- به
پلاگینها → افزودن جدیدبروید. - در فیلد جستجو عبارت «Lazy Load» را تایپ کنید.
- از نتایج، افزونهٔ موردنظر (مثلاً “Lazy Load by WP Rocket”) را انتخاب کنید.
- روی
هماکنون نصب کنکلیک کنید و پس از نصب،فعالسازیرا بزنید. - پس از فعالسازی، یک صفحه تنظیمات جدید در منوی “تنظیمات → Lazy Load” ظاهر میشود.
در صفحه تنظیمات، فقط چند گزینهٔ کلیدی را بهدستآمدن به عملکرد بهینه نیاز دارید. ابتدا بارگذاری تاخیر (delay) را بر روی 100 ms تنظیم کنید تا مرورگر زمان کافی برای شناسایی موقعیت تصویر داشته باشد. سپس محدود کردن بهروزرسانی برای تصاویر زیر 150 KB را فعال کنید؛ این کار باعث میشود تصاویر کوچک که نیازی به تاخیر ندارند، بلافاصله لود شوند. در نهایت گزینهٔ Exclude را برای تصاویر مهم (مثلاً لوگوی سایت) تنظیم کنید تا همیشه نمایش داده شوند.
| تنظیمات | مقدار پیشنهادی | هدف |
|---|---|---|
| Delay (ms) | 100 | پیشگیری از لود ناهمزمان هنگام اسکرول سریع |
| Exclude selectors | .site-logo, .hero-image | اطمینان از نمایش فوری عناصر برندینگ |
| Skip small images | حداکثر 150 KB | کاهش زمان پردازش برای تصاویر سبک |
پس از ذخیرهٔ تنظیمات، میتوانید با ابزارهای مرورگر (مثلاً تب “Network” در DevTools) بررسی کنید که تصاویر تنها هنگام اسکرول بهدرستی بارگذاری میشوند. اگر همچنان برخی تصاویر لود میشوند، لیست استثنای Exclude را بازبینی کنید؛ گاهی کلاسهای سفارشی قالب باعث میشوند افزونه نتواند آنها را شناسایی کند. با این روش، لیزیلود بهصورت مطمئن و بدون افت تجربهٔ کاربری پیادهسازی میشود.
پیکربندی افزونه برای حداکثر سرعت
قبل از اینکه افزونهٔ lazy load را فعال کنید، حتماً به تنظیمات پیشرفتهٔ آن نگاه کنید؛ اکثر افزونهها با مقدار پیشفرضی عرضه میشوند که برای سایتهای ساده مناسب است، اما برای حداکثر سرعت نیاز به بهینهسازی دارد. تنظیمات درست میتواند زمان رندر اولیه را تا ۲‑۳ ثانیه کاهش دهد و مصرف پهنای باند را بهطور قابل توجهی بهبود بخشد.
تنظیمات کلیدی برای حداکثر سرعت را میتوانید در قالب یک لیست کوتاه مرور کنید:
- فعالسازی native lazy loading (اگر مرورگرهای هدف شما این قابلیت را دارند).
- استفاده از placeholder با ابعاد ثابت برای جلوگیری از جابجایی محتوا (layout shift).
- تنظیم threshold (فاصلهٔ پیشبارگذاری) بین ۲۰۰ تا ۳۰۰ پیکسل؛ این مقدار به مرورگر میگوید چه زمانی تصویر را پیشبارگذاری کند.
- قرار دادن اسکریپت در
footerو افزودنasyncیاdeferبرای کاهش زمان بلوک شدن رندر. - استثنا کردن تصاویر «بالایقاب» (above‑the‑fold) یا لوگوهای مهم؛ این کار با افزودن کلاس
.no-lazyیا تنظیم لیست استثناء در پنل افزونه انجام میشود. - یکپارچهسازی با CDN (شبکهٔ توزیع محتوا) برای بارگذاری سریعتر فایلهای تصویری.
برای کاربران پیشرفتهتر، برخی افزونهها گزینهٔ IntersectionObserver را بهصورت پیشفرض فعال میکنند؛ این API مرورگرها را قادر میسازد تا بهصورت هوشمندتر و با مصرف منابع کمتر، تشخیص دهند چه عناصری در viewport ظاهر میشوند. علاوه بر این، میتوانید بارگذاری iframeهای ویدئویی را نیز بهصورت lazy تنظیم کنید و از استثناء کلاسهای خاص (مانند .hero‑video) برای جلوگیری از تاخیر در نمایش محتواهای مهم استفاده نمایید. تنظیمات «exclude on mobile» نیز برای سایتهایی که در موبایل بارگذاری تصویرهای بزرگ را محدود میکند، مفید است.
| تنظیم | مقدار پیشنهادی | دلیل |
|---|---|---|
| Threshold | 250 px | بارگذاری پیشاز‑نمایش، کاهش تاخیر در اسکرول |
| Placeholder size | ابعاد ثابت (مثلاً 300×200) | جلوگیری از جابجایی لایهها (CLS) |
| Script placement | Footer + async | عدم مسدود کردن رندر اولیه |
| Exclude above‑the‑fold | کلاس .no‑lazy | اطمینان از بارگذاری سریع عناصر کلیدی |
بهعنوان مثال، در یک وبسایت خبری که روزانه بیش از ۲ ۰۰ تصویر بندانگشتی دارد، با تنظیم threshold روی ۲۵۰ px و استفاده از placeholderهای با اندازهٔ ثابت، زمان اولین بایت (TTFB) بهطور متوسط از ۱.۲ ثانیه به زیر ۰.۸ ثانیه کاهش یافت؛ در عین حال امتیاز CLS در گوگلپیجسپید از ۰.۲۲ به ۰.۰۷ افت کرد. این نتایج نشان میدهد که یک پیکربندی دقیق میتواند تفاوت چشمگیری در تجربهٔ کاربری ایجاد کند.
تست عملکرد لیزی لود با ابزارهای وب
پس از فعالسازی لیزی لود، اولین گام بررسی واقعی تأثیر آن بر سرعت سایت است. ابزارهای وب میتوانند به شما نشان دهند که چه مقدار زمان بارگذاری اولیه (First Contentful Paint) و زمان بارگذاری کل صفحه (Total Blocking Time) تغییر کرده است. این دادهها بهخصوص برای صفحات حاوی تصاویر بزرگ یا ویدئوهای تعبیهشده بسیار ارزشمندند.
یکی از سادهترین روشها استفاده از Google PageSpeed Insights است. کافی است آدرس صفحهتان را وارد کنید و نتایج را در دو بخش «امتیاز سرعت» و «پیشنهادات فنی» بررسی کنید. در بخش “Opportunities” بهدست آوردن مقدار کاهش حجم دادهها (مثلاً 150 KB) و بهبود زمان بارگذاری اولیه (مثلاً 0.8 ثانیه) نشانههای واضحی از عملکرد لیزی لود هستند. همچنین میتوانید گزارش Lighthouse را دانلود کنید تا جزئیات دقیقتری از هر عنصر صفحه داشته باشید.
| ابزار | قبل از لیزی لود | بعد از لیزی لود |
|---|---|---|
| PageSpeed Insights (امتیاز) | 68 | 84 |
| First Contentful Paint | 2.3 ثانیه | 1.5 ثانیه |
| Total Blocking Time | 320 ms | 190 ms |
| حجم صفحه (KB) | 1,250 KB | 980 KB |
در تجزیه و تحلیل نتایج، بهخصوص به «کاهش وزن صفحه» و «بهبود زمان اولین پیکسل» توجه کنید؛ اگر این دو معیار بهطور قابلتوجهی ارتقا پیدا نکردند، ممکن است لیزی لود بهدرستی پیادهسازی نشده باشد (مثلاً تصاویر بهصورت data-src بارگذاری نشده یا اسکریپت لود بهدرستی اجرا نمیشود). یک نکته عملی این است که با ابزار WebPageTest یک تست چند مرحلهای انجام دهید؛ ابتدا بدون لیزی لود، سپس با آن و نهایتاً با ترکیب کش مرورگر برای مشاهدهٔ تأثیر ترکیبی. این روش به شما کمک میکند تا بهسرعت تشخیص دهید که بهینهسازیهای بیشتر مانند فشردهسازی تصویر یا استفاده از CDN چه مقدار بهسوی هدف نهایی سرعت میبرد.
رفع مشکلات رایج پس از فعالسازی
پس از فعالسازی lazy load ممکن است برخی از المانهای سایت رفتار غیرعادی نشان دهند. رایجترین مشکل «تصاویر یا ویدیوها بهصورت ناقص یا بههیچوجه نمایش داده نمیشوند» است؛ این نشانهای از تداخل اسکریپتهای جاوااسکریپت یا تنظیمات نادرست در افزونه است. همچنین ممکن است صفحهگذاری (layout) دچار لرزش (layout shift) شود که بهویژه در دستگاههای موبایل تجربه کاربری را تحتتأثیر قرار میدهد. در برخی موارد، افزونههای کش (cache) یا بهینهسازی CSS/JS میتوانند درخواستهای lazy load را مسدود کنند و باعث بروز خطاهای 404 شوند.
- تداخل با افزونههای دیگر (مانند افزونههای بهینهسازی تصویر یا CDN)
- عدم سازگاری قالب با lazy load پیشفرض وردپرس
- استفاده از تگهای
data-srcبهجایsrcبدون تنظیم صحیح - کش مرورگر یا سرور که نسخهٔ قدیمی اسکریپت را سرو میکند
- خطاهای جاوااسکریپت در کنسول مرورگر که مانع اجرای lazy load میشوند
برای رفع این مشکلات میتوانید از جدول زیر بهعنوان یک مسیر سریع استفاده کنید. ستون «مشکل» شامل علائم رایج است و ستون «راهحل» گامهای عملی را بیان میکند.
| مشکل | راهحل |
|---|---|
| تصاویر نمایش نمیشوند | بررسی کنسول مرورگر برای خطاهای data-src؛ در صورت نیاز، تنظیم src را به data-src تغییر دهید و مطمئن شوید که اسکریپت lazy load بارگذاری میشود. |
| لرزش صفحه (layout shift) | برای هر تصویر یک width و height ثابت یا ویژگی aspect-ratio تعریف کنید تا مرورگر قبل از بارگذاری تصویر فضای مورد نیاز را رزرو کند. |
| تداخل با افزونهٔ کش | کش را خالی (purge) کنید؛ اگر مشکل ادامه یافت، موقتاً افزونهٔ کش را غیرفعال کنید و رفتار lazy load را تست کنید. |
یک مثال عملی: فرض کنید از قالب «Newspaper» استفاده میکنید که بهصورت پیشفرض lazy load داخلی دارد. پس از نصب افزونهٔ «Lazy Load by WP Rocket»، تصاویر دو بار درخواست میشوند و زمان بارگذاری افزایش مییابد. برای رفع این وضعیت، ابتدا گزینهٔ «Enable native lazy loading» در تنظیمات قالب را غیرفعال کنید، سپس فقط یکی از روشها (قالب یا افزونه) را فعال نگه دارید. این کار نه تنها تداخل کدها را حذف میکند بلکه بهدستآوردن سرعت بهینه کمک میکند.
سوالات متداول
چطور lazy load را بدون افزونه فعال کنم؟
میتوانید با اضافه کردن کد به functions.php و استفاده از attribute loading=’lazy’ در تگ img این کار را انجام دهید. ابتدا فیلتر the_content را برای پردازش محتوا اضافه کنید. سپس از wp_kses_post برای حفظ امنیت استفاده کنید.
آیا lazy load باعث کاهش سرعت بارگذاری تصاویر در موبایل میشود؟
بله، lazy load فقط زمانی که تصویر در viewport ظاهر میشود درخواست میشود، بنابراین ترافیک اولیه کاهش مییابد. این کار به ویژه در اتصالات کند موبایل مفید است. عملکرد کلی سایت بهبود مییابد بدون تاثیر منفی بر کیفیت تصویر.
اگر تم من از jQuery استفاده کند، آیا باید اسکریپت خاصی اضافه کنم؟
اگر تم از jQuery استفاده میکند، میتوانید از متد .on(‘load’) برای اعمال lazy load به تصاویر اضافه کنید. همچنین میتوانید کتابخانه lazysizes را که به jQuery وابسته نیست بارگذاری کنید. اطمینان حاصل کنید که اسکریپت پس از jQuery بارگذاری شود.
آیا میتوان برای ویدیوهای تعبیهشده نیز lazy load تنظیم کرد؟
بله، میتوانید برای iframeهای یوتیوب یا ویمئو attribute loading=’lazy’ اضافه کنید. همچنین میتوانید با جایگزینی src با data-src و استفاده از اسکریپت lazy load آنها را به تعویق بیندازید. این روش بارگذاری صفحه را بهطور قابل توجهی بهینه میکند.
چکلیست سریع
- اصول لیزی لود و اثر آن بر سرعت سایت را درک کنید.
- از تنظیمات هسته وردپرس برای فعالسازی لیزی لود استفاده کنید.
- یک افزونه معتبر لیزی لود از مخزن رسمی انتخاب کنید.
- پیکربندی پیشرفته افزونه را برای حداکثر بهینهسازی انجام دهید.
- کارایی لیزی لود را با ابزارهای تست سرعت بررسی کنید.
- مشکلات رایج پس از فعالسازی را شناسایی و رفع کنید.
- عملکرد تصاویر و ویدئوها را بهصورت دورهای نظارت کنید.
- افزونه و هسته وردپرس را بهروز نگه دارید تا سازگاری حفظ شود.
با پیادهسازی لیزی لود، زمان بارگذاری صفحات بهطور قابل توجهی کاهش مییابد و تجربه کاربری بهبود میگیرد. چه از طریق تنظیمات هسته و چه با افزونههای بهینه، میتوانید این تکنیک را بهسرعت بهکار ببندید. اگر در حین پیکربندی سؤال یا مشکلی پیش آمد، خوشحال میشوم نظراتتان را بشنوم.

