Image
Image

بهینه‌ساز جاسازی‌ها (Embed Optimizer)

توضیحات

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

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

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

بارگذاری تنبل جاسازی‌ها عملکرد را بهبود می‌بخشد زیرا جاسازی‌ها عموماً بسیار پرمصرف هستند، بنابراین بارگذاری تنبل آن‌ها اطمینان حاصل می‌کند که هنگام بارگذاری صفحه با منابع رقابت نمی‌کنند. بارگذاری تنبل جاسازی‌های مبتنی بر IFRAME به سادگی با افزودن ویژگی loading=lazy انجام می‌شود. بارگذاری تنبل جاسازی‌هایی که شامل تگ‌های SCRIPT هستند با استفاده از یک Intersection Observer انجام می‌شود تا زمانی که نگهدارنده FIGURE جاسازی قرار است وارد ناحیه دید شود را رصد کند و سپس تگ SCRIPT را به صورت پویا درج می‌کند.

این افزونه همچنین توصیه می‌کند که افزونه Optimization Detective را نصب و فعال کنید، که چندین بهینه‌سازی فراتر از بارگذاری تنبل را باز می‌کند. بدون Optimization Detective، بارگذاری تنبل در واقع می‌تواند عملکرد را هنگامی که یک جاسازی در ناحیه دید اولیه قرار دارد کاهش دهد. این به این دلیل است که بارگذاری تنبل چنین عناصر ابتدایی ناحیه دید می‌تواند LCP را کاهش دهد زیرا رندر توسط منطق تعیین مرئی بودن عنصر به تأخیر می‌افتد. به همین دلیل است که هسته وردپرس تمام تلاش خود را می‌کند تا از بارگذاری تنبل تگ‌های IMG که در ناحیه دید اولیه ظاهر می‌شوند اجتناب کند، اگرچه روش‌های اکتشافی سمت سرور کامل نیستند. اینجاست که Optimization Detective وارد می‌شود زیرا تشخیص می‌دهد که آیا یک جاسازی در هر ناحیه دید خاص مربوط به نقطه شکست (breakpoint)، مانند موبایل، تبلت و دسکتاپ ظاهر می‌شود یا خیر. (همچنین افزونه Image Prioritizer را ببینید که Optimization Detective را توسعه می‌دهد تا اطمینان حاصل شود که بارگذاری تنبل بر اساس اینکه آیا IMG در ناحیه دید اولیه است یا خیر، به درستی اعمال می‌شود.)

هنگامی که Optimization Detective فعال است، شروع به ردیابی جاسازی‌هایی می‌کند که بر اساس بازدیدهای واقعی از سایت شما در ناحیه دید اولیه (initial viewport) ظاهر می‌شوند. با در دست داشتن این اطلاعات، Embed Optimizer از بارگذاری تنبل جاسازی‌هایی که در ناحیه دید اولیه هستند اجتناب می‌کند. علاوه بر این، برای چنین جاسازی‌هایی که در بالای صفحه (above-the-fold) قرار دارند، Embed Optimizer همچنین لینک‌های پیش‌اتصال (preconnect) را برای منابعی که می‌دانیم توسط آن جاسازی‌ها استفاده می‌شوند، اضافه می‌کند. برای مثال، اگر یک جاسازی یوتیوب در ناحیه دید اولیه ظاهر شود، Embed Optimizer به همراه Optimization Detective ویژگی loading=lazy را حذف کرده و همزمان یک لینک پیش‌اتصال برای https://i.ytimg.com اضافه می‌کند که دامنه‌ای است که تصاویر پوستر ویدیوهای یوتیوب از آن ارائه می‌شوند. چنین لینک‌های پیش‌اتصالی باعث می‌شوند جاسازی‌های ناحیه دید اولیه حتی سریع‌تر بارگذاری شوند.

ویژگی مهم دیگر در Embed Optimizer که توسط Optimization Detective فعال می‌شود، کاهش تغییرات چیدمان ناشی از جاسازی‌هایی است که هنگام بارگذاری تغییر اندازه می‌دهند. این مورد معمولاً در جاسازی‌های نوشته‌های وردپرس یا توییت‌ها دیده می‌شود. Embed Optimizer ارتفاع تغییر یافته این جاسازی‌ها را ردیابی می‌کند. با ذخیره این ارتفاع‌های تغییر یافته، Embed Optimizer ارتفاع مناسب را روی عنصر FIGURE نگهدارنده به عنوان min-height مخصوص ناحیه دید (viewport) تنظیم می‌کند تا هنگام بارگذاری جاسازی، باعث تغییر چیدمان نشود.

از آنجا که کارآگاه بهینه‌سازی (Optimization Detective) برای یادگیری نحوه چیدمان صفحه به بازدیدهای صفحه متکی است، باید منتظر بمانید تا بازدیدهایی از دستگاه موبایل و دسکتاپ داشته باشید تا اعمال بهینه‌سازی‌ها را مشاهده کنید. همچنین توجه داشته باشید که کارآگاه بهینه‌سازی به طور پیش‌فرض بهینه‌سازی‌ها را برای کاربران مدیر وارد شده اعمال نمی‌کند.

لطفاً توجه داشته باشید که بهینه‌سازی‌ها برای اعمال روی بلوک‌های جاسازی (Embed blocks) در نظر گرفته شده‌اند. بنابراین اگر اعمال بهینه‌سازی‌ها را مشاهده نمی‌کنید، مطمئن شوید که جاسازی‌های شما داخل یک بلوک کلاسیک (Classic Block) نیستند.

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

نصب

نصب از طریق وردپرس

  1. به مسیر افزونه‌ها > افزودن بروید.
  2. عبارت Embed Optimizer را جستجو کنید.
  3. افزونه Embed Optimizer را نصب و فعال کنید.

نصب دستی

  1. کل پوشه embed-optimizer را در دایرکتوری /wp-content/plugins/ آپلود کنید.
  2. به بخش افزونه‌ها بروید.
  3. افزونه Embed Optimizer را فعال کنید.

سوالات متداول

کجا می‌توانم بازخورد خود را درباره افزونه ارسال کنم؟

بازخوردها تشویق شده و بسیار قدردانی می‌شوند، به خصوص که این افزونه ممکن است شامل ویژگی‌های آینده هسته وردپرس باشد. اگر پیشنهاد یا درخواستی برای ویژگی‌های جدید دارید، می‌توانید آن‌ها را به عنوان یک issue در مخزن گیت‌هاب تیم عملکرد وردپرس ثبت کنید. اگر برای عیب‌یابی به کمک نیاز دارید یا سوالی درباره افزونه دارید، لطفاً یک موضوع جدید در انجمن پشتیبانی ما ایجاد کنید.

کجا می‌توانم باگ‌های امنیتی را گزارش دهم؟

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

برای گزارش یک مشکل امنیتی، لطفاً از برنامه WordPress HackerOne بازدید کنید.

چگونه می‌توانم در افزونه مشارکت کنم؟

مشارکت‌ها همیشه مورد استقبال هستند! درباره نحوه مشارکت در دستورالعمل تیم عملکرد هسته بیشتر بیاموزید.

کد منبع افزونه در مخزن WordPress/performance در گیت‌هاب قرار دارد.

نقد و بررسی‌ها

خواندن تمامی 2 نقد و بررسی‌

توسعه دهندگان و همکاران

“بهینه‌ساز جاسازی‌ها (Embed Optimizer)” نرم افزار متن باز است. افراد زیر در این افزونه مشارکت کرده‌اند.

مشارکت کنندگان

“بهینه‌ساز جاسازی‌ها (Embed Optimizer)” به 8 زبان ترجمه شده است. با تشکر از مترجمین برای همکاری و کمک‌هایشان.

ترجمه “بهینه‌ساز جاسازی‌ها (Embed Optimizer)” به زبان شما.

علاقه‌ مند به توسعه هستید؟

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

گزارش تغییرات

1.0.0-beta3

بهبودها

  • Add URL Metric mutation helpers to extension initialization API. (1951)
  • Improve construction of inline scripts with sourceURL, hardened JSON encoding, and exporting JSON in separate script. (2169)

1.0.0-beta2

بهبودها

  • به‌روزرسانی OD_HTML_Tag_Processor::next_tag() برای اجازه دادن به آرگومان $query و آماده‌سازی جهت رد کردن تگ‌های بسته به صورت پیش‌فرض. (1872)
  • در دسترس قرار دادن توابع ثبت وقایع (logging) برای افزونه‌های سمت کاربر و در نظر گرفتن خودکار مقدار isDebug. (1895)

1.0.0-beta1

بهبودها

  • ارتقاء نسخه به 1.0.0-beta1 برای نشان دادن خروج از حالت آزمایشی. ببینید: 1846.
  • استفاده از نحوه نگارش دامنه CSS (range syntax) در مدیا کوئری‌ها. (1833)

0.4.1

رفع باگ‌ها

  • حذف الزام جمع‌آوری معیارهای URL موبایل و دسکتاپ برای افزودن لینک‌های preconnect. (1764)

0.4.0

بهبودها

  • ادغام مدیا کوئری‌ها در لینک‌های پیش‌اتصال برای در نظر گرفتن اینکه آیا جاسازی‌ها در ناحیه دید هستند یا خیر. (1654)
  • ارائه اسکریپت‌های فشرده‌نشده (unminified) زمانی که SCRIPT_DEBUG فعال است. (1643)

0.3.0

بهبودها

  • بهره‌گیری از معیارهای URL برای اختصاص فضا جهت جاسازی‌ها به منظور کاهش CLS. (1373)
  • اجتناب از بارگذاری تنبل تصاویر و جاسازی‌ها مگر اینکه معیارهای URL برای هر دو حالت موبایل و دسکتاپ وجود داشته باشد. (1604)

0.2.0

بهبودها

  • تسهیل جاسازیِ Embed Optimizer. (1337)
  • بهره‌گیری از Optimization Detective برای بهینه‌سازی جاسازی‌ها در Embed Optimizer. (1302)

0.1.2

بهبودها

  • بهبود کیفیت کلی کد با بررسی‌های دقیق‌تر تحلیل استاتیک. (775)
  • افزایش حداقل PHP مورد نیاز به ۷.۲. (1130)

رفع باگ‌ها

  • مخفی کردن آی‌فریم‌های جاسازی نوشته با visibility:hidden به جای برش دادن (clipping). (1192)

0.1.1

  • استفاده از نامک افزونه برای تگ generator. (1103)
  • افزایش حداقل نسخه مورد نیاز وردپرس به ۶.۴. (1076)

0.1.0

  • انتشار اولیه.