Tips & Tricks افزونه Statnive · Parhum Khoshbakht

چرا افزونهٔ آماری شما سایت‌تان را کند می‌کند

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

شاید افزونهٔ آماری شما به قیمت رتبه‌تان تمام شود

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

گوگل از سال 2021 از Core Web Vitals به‌عنوان یک سیگنال رتبه‌بندی استفاده می‌کند. یکی از این سه سنجه — یعنی Largest Contentful Paint (LCP) — اندازه می‌گیرد که محتوای اصلی شما چقدر سریع ظاهر می‌شود. افزونهٔ آماری‌ای که یک اسکریپت مسدودکنندهٔ رندر اضافه می‌کند، می‌تواند LCP شما را از محدودهٔ «خوب» (زیر 2.5 ثانیه) به محدودهٔ «نیازمند بهبود» براند. تفاوت میان رتبه گرفتن در صفحهٔ یک و صفحهٔ دو ممکن است به چند صد میلی‌ثانیه ختم شود.

ما 8 افزونهٔ آماری محبوب وردپرس را در یک آزمون فشار مصنوعی (بار همزمان، بدون کش صفحه) سنجیدیم و تفاوت‌های بزرگی در سربار LCP پیدا کردیم — از حدود 260ms برای سبک‌ترین معماری تا بیش از 3 ثانیه برای افزونه‌هایی که مسیر نوشتن سمت سرورشان زیر بار افت می‌کرد. این اعداد تضمین محیط تولید نیستند — آن‌ها فقط یک آزمون مصنوعی بدون کش را بازتاب می‌دهند — اما الگوهای معماری‌ای که آشکار می‌کنند با پژوهش‌های منتشرشدهٔ کارایی وب همخوانی دارند.

Core Web Vitals چه چیزی را اندازه می‌گیرند و چرا اهمیت دارند

گوگل سه سنجه را روی هر صفحهٔ سایت شما ارزیابی می‌کند:

Largest Contentful Paint (LCP) اندازه می‌گیرد که محتوای اصلی شما چه زمانی نمایان می‌شود. گوگل زیر 2.5 ثانیه را «خوب» می‌داند. اسکریپت‌های آماری‌ای که رندر را مسدود می‌کنند، این عدد را بالاتر می‌برند.

Interaction to Next Paint (INP) اندازه می‌گیرد که سایت شما چقدر سریع به کلیک‌ها و ضربه‌ها پاسخ می‌دهد. کد جاوااسکریپت سنگین افزونه‌های آماری می‌تواند پاسخ مرورگر به تعامل کاربر را به تأخیر بیندازد.

Cumulative Layout Shift (CLS) پایداری بصری را اندازه می‌گیرد. اسکریپت‌های آماری به‌ندرت جابه‌جایی چیدمان ایجاد می‌کنند، اما اسکریپت‌هایی که بد بارگذاری می‌شوند می‌توانند ظاهرشدن سایر عناصر را در جای درست‌شان به تأخیر بیندازند.

صفحه‌ای که در Core Web Vitals مردود می‌شود، به‌طور خودکار رتبه‌اش را از دست نمی‌دهد. اما وقتی دو صفحه با کیفیت محتوای مشابه بر سر یک کلیدواژه رقابت می‌کنند، صفحهٔ سریع‌تر برتری دارد. برای سایت‌های فروشگاهی، این تأثیر فراتر از سئو می‌رود — یک بهبود 100ms در زمان بارگذاری می‌تواند نرخ تبدیل را تا 1.11% در هر جلسه افزایش دهد.

اسکریپت‌های آماری چطور صفحه‌های شما را کند می‌کنند

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

اندازهٔ اسکریپت. اسکریپت gtag.js متعلق به Google Analytics 4 فشرده‌شده 134KB است. جایگزین‌های حریم‌خصوصی‌محور مانند Koko Analytics از 468 بایت استفاده می‌کنند. این تفاوت در زمان تجزیه چشمگیر است، به‌ویژه روی دستگاه‌های موبایل که پردازش جاوااسکریپت در آن‌ها 2 تا 5 برابر کندتر از دسکتاپ است.

راهبرد بارگذاری. اسکریپتی که بدون ویژگی‌های async یا defer بارگذاری می‌شود، تا پایان اجرایش مرورگر را از رندر کردن هر محتوایی باز می‌دارد. به این کار «مسدودکردن رندر» می‌گویند و بزرگ‌ترین عامل افت کارایی برای افزونه‌های آماری است.

روش انتقال داده. برخی افزونه‌ها برای ارسال دادهٔ ردیابی از XMLHttpRequest همگام استفاده می‌کنند — این کار رشتهٔ اصلی را مسدود می‌کند. افزونه‌های امروزی از navigator.sendBeacon() استفاده می‌کنند که شلیک‌کن‌و‌فراموش‌کن است و هرگز تعامل کاربر را مسدود نمی‌کند.

داده‌ها: 8 افزونهٔ آماری در یک آزمون فشار چطور با هم مقایسه می‌شوند

ما هر افزونه را به‌تنهایی روی یک سایت WordPress 6.9 با WooCommerce آزمودیم و از مرورگرهای واقعی Chromium استفاده کردیم، در حالی که 50 کاربر همزمان HTTP به سرور فشار می‌آوردند. هیچ کش صفحه‌ای نصب نبود — هر درخواست کل مسیر PHP وردپرس را طی می‌کرد. سایت‌های وردپرسی محیط تولید معمولاً این‌طور اجرا نمی‌شوند، اما این روش آشکار می‌کند که معماری هر افزونه چطور با رقابت بر سر منابع کنار می‌آید. مرتب‌شده بر اساس سربار LCP در آزمون تک‌اجرای ما:

افزونهسربار LCP در آزمونمعماری
Statnive+260msهستهٔ درون‌خطی + خارجی async
Independent Analytics+566msقلاب‌های PHP سمت سرور
Jetpack Stats+776msراه‌دور (WordPress.com)
MonsterInsights (GA4)+964msgtag.js خارجی 134KB
WP Slimstat+1030msاسکریپت خارجی + REST
WP Statistics+1424msاسکریپت خارجی + admin-ajax
Koko Analytics+2278ms468B درون‌خطی + نوشتن در پایگاه‌داده به‌ازای هر درخواست
Burst Statistics+3592msخارجی async + Beacon API

نکات مهم احتیاطی پیش از آن‌که این اعداد را بیش از حد جدی بگیرید:

  • این فقط یک اجرای واحد روی یک ماشین توسعه بدون کش صفحه است. سایت‌های محیط تولید با کش W3TC، WP Rocket یا Cloudflare تفاوت‌های به‌مراتب کوچک‌تری نشان می‌دهند، چون صفحه‌های کش‌شده هیچ‌وقت کد PHP افزونه را اجرا نمی‌کنند.
  • تفاوت‌های بسیار بزرگ برای Koko Analytics و Burst Statistics مشکوک‌اند. آن‌ها احتمالاً بازتاب مشکلات خاص رقابت بر سر نوشتن سمت سرور هستند (سریال‌سازی نوشتن در پایگاه‌داده، پردازش دسته‌ای WP-Cron) که هنگام بار مصنوعی ما رخ دادند، نه سربار حالت پایدار. آن‌ها را به‌معنای «Koko و Burst سایت شما را 2 تا 3 ثانیه کند می‌کنند» نگیرید — روی یک سایت معمولی چنین نمی‌کنند.
  • چیزی که قابل تعمیم است، الگوهای معماری است، نه آن میلی‌ثانیه‌های مشخص. ردیاب‌های هستهٔ درون‌خطی، بارگذاری async، انتقال با Beacon API و مسیرهای نوشتن امن در برابر همزمانی، بهترین‌رویه‌های مستندی هستند که پژوهش‌های گوگل، WordPress Core و web.dev پشتیبان‌شان‌اند. اعداد مشخص هر آزمون منفردی فرق خواهند کرد.

روی یک اتصال موبایل 3G، هر سرباری از جاوااسکریپت بیشتر اهمیت دارد، چون زمان تجزیه و کامپایل روی پردازنده‌های موبایل 2 تا 5 برابر طولانی‌تر است — بنابراین انتخاب یک معماری ردیاب سبک، فارغ از این‌که آن را روی چه سروری اجرا می‌کنید، به کاربران موبایل کمک می‌کند.

به Statnive کوچ کنید: بدون جریمهٔ کارایی، با آمار کامل

ردیاب هستهٔ درون‌خطی Statnive با حجم حدود 0.9 KB فشرده‌شده، بازدید صفحهٔ شما را پیش از بارگذاری هر اسکریپت خارجی شلیک می‌کند. همهٔ داده‌ها روی سرور وردپرس شما می‌مانند — بدون کوکی، بدون بنر رضایت. رایگان از WordPress.org نصب کنید.

چطور سربار آماری سایت خودتان را بررسی کنید

لازم نیست حرف ما را قبول کنید. اینجا سه راه برای اندازه‌گیری تأثیر کارایی افزونهٔ آماری روی سایت خودتان آورده‌ایم:

روش 1: Google PageSpeed Insights

به pagespeed.web.dev بروید، نشانی سایت‌تان را وارد کنید و بخش «Diagnostics» را بررسی کنید. دنبال اسکریپت آماری‌تان زیر «Reduce JavaScript execution time» یا «Remove render-blocking resources» بگردید. اگر جاوااسکریپت آماری شما آنجا ظاهر شود، یعنی دارد به امتیازهای‌تان آسیب می‌زند.

روش 2: زبانهٔ Performance در Chrome DevTools

ابزار Chrome DevTools را باز کنید (F12)، به زبانهٔ Performance بروید و یک بار بارگذاری صفحه را ضبط کنید. در نمودار شعله‌ای، نام اسکریپت آماری‌تان را جست‌وجو کنید. پهنای بلوک اجرای آن دقیقاً نشان می‌دهد چند میلی‌ثانیه هزینه دارد. این را با کل زمان بارگذاری صفحه مقایسه کنید.

روش 3: غیرفعال کنید و مقایسه کنید

قابل‌اعتمادترین آزمون: Google PageSpeed Insights را با افزونهٔ آماری فعال اجرا کنید و امتیاز LCP را یادداشت کنید، سپس افزونه را موقتاً غیرفعال کنید و دوباره آزمون بگیرید. این تفاوت، هزینهٔ دقیق کارایی افزونهٔ شماست.

در یک افزونهٔ آماری سریع دنبال چه باشید

اگر دارید یک افزونهٔ آماری را با در نظر گرفتن کارایی انتخاب می‌کنید، این ویژگی‌ها را در اولویت بگذارید:

بارگذاری async یا به‌تعویق‌افتادهٔ اسکریپت. افزونه باید از پارامتر بومی strategy در WordPress 6.3 استفاده کند یا ویژگی‌های async/defer را به اسکریپت ردیاب خود بیفزاید. اسکریپتی بدون این ویژگی‌ها رندر را مسدود می‌کند.

اندازهٔ کوچک اسکریپت. هدف، زیر 5KB فشرده‌شده است. هر چیزی بالای 50KB زمان تجزیهٔ قابل‌اندازه‌گیری روی دستگاه‌های موبایل اضافه می‌کند. Google Analytics 4 حجمش 134KB است — به همین دلیل است که جایگزین‌های حریم‌خصوصی‌محور به‌طور پیوسته از آن بهتر عمل می‌کنند.

Beacon API برای انتقال داده. تابع navigator.sendBeacon() داده را بدون مسدودکردن صفحه می‌فرستد. افزونه‌های قدیمی‌تر که از XMLHttpRequest همگام یا admin-ajax استفاده می‌کنند، کار غیرضروری روی رشتهٔ اصلی اضافه می‌کنند.

پردازش داده به‌صورت خودمیزبان. افزونه‌هایی که داده را به سرورهای خارجی می‌فرستند (Google Analytics، Jetpack) نیازمند بارگذاری کتابخانه‌های جاوااسکریپت شخص‌ثالث‌اند. افزونه‌های خودمیزبان مانند Statnive، Koko Analytics و WP Statistics فقط ردیاب سبک خودشان را بارگذاری می‌کنند.

بدون کوکی یا localStorage. افزونه‌هایی که کوکی ست می‌کنند، به هر درخواست بعدی سربار سرایند HTTP اضافه می‌کنند. افزونه‌های بدون‌کوکی مانند Statnive این را به‌کلی کنار می‌گذارند و در عین حال نیاز به بنرهای رضایت را هم از بین می‌برند.

پرسش‌های رایج

آیا غیرفعال‌کردن افزونهٔ آماری من واقعاً Core Web Vitals را بهتر می‌کند؟

در بیشتر موارد، بله — اما بزرگی این تأثیر به‌شدت به پیکربندی کش شما بستگی دارد. بدون کش صفحه، هر درخواست کد PHP افزونه را اجرا می‌کند و تأثیرش می‌تواند چشمگیر باشد. با یک کش صفحهٔ درست‌پیکربندی‌شده، بیشتر سربار PHP ناپدید می‌شود و فقط هزینهٔ جاوااسکریپت سمت کلاینت برای‌تان می‌ماند — که برای ردیاب‌های خوش‌طراحی چند کیلوبایتِ بارگذاری‌شده به‌صورت ناهمگام است. پاسخ واقعی به «افزونهٔ من چقدر هزینه دارد» این است: اندازه‌گیری خودتان را روی سایت محیط تولید خودتان اجرا کنید.

آیا می‌توانم Google Analytics را نگه دارم و باز هم Core Web Vitals خوبی داشته باشم؟

بله، اگر بقیهٔ سایت شما آن‌قدر سریع باشد که بتواند سربار حدود 100ms را جذب کند. اما اگر همین حالا روی مرز Core Web Vitals هستید، کوچ به یک جایگزین سبک‌تر می‌تواند بدون تغییر هیچ‌چیز دیگری در سایت‌تان، شما را به محدودهٔ «خوب» براند.

آیا ردیابی سمت سرور برای کارایی بهتر است؟

ردیابی سمت سرور (جایی که PHP به‌جای جاوااسکریپت بازدید را پردازش می‌کند) زمان تجزیهٔ جاوااسکریپت سمت کلاینت را به‌کلی از بین می‌برد — یک مزیت واقعی روی موبایل که هزینه‌های تجزیه در آن غالب‌اند. با این حال، زمان پردازش سرور (TTFB) را اضافه می‌کند و می‌تواند زیر بار همزمان و بدون کش به گلوگاه تبدیل شود. یک رویکرد ترکیبی — جاوااسکریپت درون‌خطی کمینه به‌علاوهٔ نقطهٔ پایانی سبک REST — بهترینِ هر دو را به شما می‌دهد: بدون هزینهٔ تجزیه برای بازدید حیاتی، با کمترین کار سرور به‌ازای هر درخواست.

دقیقاً چند وقت یک‌بار افزونه‌های آماری بر کاربران موبایل اثر می‌گذارند؟

تأثیر موبایل به‌طور نامتناسبی بیشتر است. تجزیهٔ جاوااسکریپت روی یک گوشی اندرویدی میان‌رده 2 تا 5 برابر طولانی‌تر از دسکتاپ طول می‌کشد. اسکریپتی که روی دسکتاپ 50ms زمان تجزیه اضافه می‌کند، ممکن است روی موبایل 100 تا 250ms اضافه کند. به همین دلیل است که اندازهٔ اسکریپت و بارگذاری async برای Core Web Vitals موبایل بیشترین اهمیت را دارند.

حرف آخر

افزونهٔ آماری شما روی هر صفحهٔ سایت‌تان کار می‌کند. این‌که چقدر، به سه چیز بستگی دارد: معماری افزونه (اسکریپت درون‌خطی در برابر مسدودکننده، همگام در برابر ناهمگام، پردازش محلی در برابر راه‌دور)، پیکربندی کش شما (وقتی درست تنظیم شود، سربار PHP را به‌شدت کم می‌کند) و میزبانی شما (که زیر بار بر TTFB اثر می‌گذارد). افزونه‌ای با معماری خوش‌طراحی انتخاب کنید، یک کش صفحه پیکربندی کنید و روی سایت خودتان اندازه بگیرید. لازم نیست میان دقت آمار و سرعت صفحه یکی را انتخاب کنید — اما نباید به هیچ سنجش منفردی، از جمله سنجش ما، هم اعتماد کامل کنید.

مقایسهٔ کامل آزمون فشار را بخوانید، یاد بگیرید چطور ردیاب Statnive را بهینه کردیم، یا Statnive را با Google Analytics، Jetpack Stats و افزونه‌های دیگر مقایسه کنید.

Get Statnive Free