توضیحات
این افزونه اجرای جاوا اسکریپت را به یک Web Worker منتقل میکند، که با آزاد کردن رشته اصلی (main thread) عملکرد را بهبود میبخشد. این باید منجر به بهبود امتیازات تعامل تا ترسیم بعدی (INP) شود.
⚠ این قابلیت آزمایشی است. ⚠
برای انتخاب یک اسکریپت جهت بارگذاری در یک ورکر، کافیست داده اسکریپت worker را به یک اسکریپت ثبت شده اضافه کنید. برای مثال،
اگر اسکریپتی با هندل foo ثبت کردهاید، برای انتقال آن به یک وب ورکر به روش زیر عمل کنید:
wp_script_add_data( 'foo', 'worker', true );
برخلاف استراتژیهای بارگذاری اسکریپت (async/defer)، هر اسکریپت درونخطی قبل/بعد (before/after) مرتبط با اسکریپت ثبت شده منتقل شده به ورکر نیز به ورکر منتقل میشود، در حالی که با استراتژیهای اسکریپت، یک اسکریپت درونخطیِ بعد (after script)، مانع از به تأخیر افتادن اسکریپت میشود.
در غیر این صورت، این افزونه در حال حاضر با ادغامهای داخلی برای انتقال Google Analytics به یک وب ورکر برای افزونه زیر ارائه میشود:
لطفاً پس از فعالسازی، آمار خود را رصد کنید تا اطمینان حاصل کنید که تمام رویدادهای مورد انتظار ثبت میشوند. در عین حال، امتیازات INP خود را برای بررسی بهبود نظارت کنید.
این افزونه متکی بر کتابخانه Partytown 🎉 ساخته Builder.io است که تحت مجوز MIT منتشر شده. این کتابخانه در نسخه بتا است و چندین باگ باز دارد.
پیکربندی Partytown را میتوان از طریق فیلتر plwwo_configuration تغییر داد. برای مثال:
<?php
add_filter( 'plwwo_configuration', function ( $config ) {
$config['mainWindowAccessors'][] = 'wp'; // Make the wp global available in the worker (e.g. wp.i18n and wp.hooks).
return $config;
} );
با این حال، همه گزینههای پیکربندی را نمیتوان به این روش به JSON سریالسازی کرد، برای مثال پیکربندی resolveUrl یک تابع است. برای مشخص کردن این مورد، میتوانید یک اسکریپت درونخطی به صورت زیر اضافه کنید.
<?php
add_action(
'wp_enqueue_scripts',
function () {
wp_add_inline_script(
'web-worker-offloading',
<<<JS
window.partytown = {
...(window.partytown || {}),
resolveUrl: (url, location, type) => {
if (type === 'script') {
const proxyUrl = new URL('https://my-reverse-proxy.example.com/');
proxyUrl.searchParams.append('url', url.href);
return proxyUrl;
}
return url;
},
};
JS,
'before'
);
}
);
همچنین گزینههای پیکربندی زیادی وجود دارد که مستند نشدهاند، بنابراین به تعاریف TypeScript مراجعه کنید.
سوالات متداول
-
چرا اسکریپتهای منتقل شده من کار نمیکنند و خطای 404 در کنسول برای `partytown-sandbox-sw.html` میبینم؟
-
اگر متوجه شدید که اسکریپتهای منتقل شده (offloaded) شما کار نمیکنند و همزمان خطای 404 در کنسول برای فایلی در
/wp-content/plugins/web-worker-offloading/build/partytown-sandbox-sw.html?1727389399791مشاهده میکنید، احتمالاً ابزارهای توسعهدهنده کروم (Chrome DevTools) را باز کردهاید و گزینه “Bypass for Network” در پنل Application فعال است. -
کجا میتوانم باگهای امنیتی را گزارش دهم؟
-
تیم عملکرد و جامعه وردپرس باگهای امنیتی را بسیار جدی میگیرند. از تلاش شما برای افشای مسئولانه یافتههایتان سپاسگزاریم و تمام تلاش خود را برای قدردانی از مشارکتهای شما انجام خواهیم داد.
برای گزارش یک مشکل امنیتی، لطفاً از برنامه WordPress HackerOne بازدید کنید.
-
چگونه میتوانم در افزونه مشارکت کنم؟
-
مشارکتها همیشه مورد استقبال هستند! درباره نحوه مشارکت در دستورالعمل تیم عملکرد هسته بیشتر بیاموزید.
کد منبع افزونه در مخزن WordPress/performance در گیتهاب قرار دارد.
نقد و بررسیها
توسعه دهندگان و همکاران
“بارگذاری در Web Worker” نرم افزار متن باز است. افراد زیر در این افزونه مشارکت کردهاند.
مشارکت کنندگان“بارگذاری در Web Worker” به 6 زبان ترجمه شده است. با تشکر از مترجمین برای همکاری و کمکهایشان.
ترجمه “بارگذاری در Web Worker” به زبان شما.
علاقه مند به توسعه هستید؟
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
گزارش تغییرات
0.2.0
بهبودها
- ادغام بارگذاری در Web Worker با سایت کیت گوگل (Google Site Kit). (1686)
- ادغام بارگذاری در Web Worker با رنک مث سئو (Rank Math SEO). (1685)
- ارائه اسکریپتهای فشردهنشده زمانی که
SCRIPT_DEBUGفعال است. (1643)
رفع اشکالات
- رفع ردیابی رویدادهایی مانند add_to_cart در ادغام ووکامرس. (1740)
0.1.1
بهبودها
- افزودن متا generator بارگذاری در Web Worker. (1598)
0.1.0
- انتشار اولیه.
