سایت روی ۴۰۰ میلیثانیه TTFB قفل کرده، پنل ادمین کند باز میشود و آخرین باری که افزونهای را غیرفعال کردید یادتان نمیآید. اگر تعداد افزونههای فعال از بیست گذشته باشد، احتمالاً مشکل نه در هاست است و نه در قالب؛ در انبوهی از کدهایی است که هر کدام چند میلیثانیه از هر درخواست را میخورند. ممیزی افزونه وردپرس یعنی همین: اندازهگیری، نه حدس.
اول اندازه بگیرید، بعد حذف کنید
غریزه اول اکثر مدیرها این است که لیست افزونهها را باز کنند و هر چه به نظرشان «غیرضروری» است پاک کنند. این کار معمولاً سایت را میشکند و مشکل سرعت را هم حل نمیکند، چون گرانترین افزونه اغلب همان است که فکر میکنید لازم است.
ابزار درست، Query Monitor است. نصبش کنید، فعالش کنید و یک صفحه از سایت را باز کنید. در نوار بالای ادمین، زمان کل، تعداد کوئریها و مصرف حافظه را میبینید. روی بخش Queries بزنید و ستون «Caller» را نگاه کنید؛ هر کوئری نشان میدهد کدام افزونه یا کدام فایل قالب آن را اجرا کرده. حالا به بخش «Components» بروید: Query Monitor زمان اجرای هر افزونه را جدا نشان میدهد.
یک نکته عملی: این اندازهگیری را روی صفحه اصلی، یک برگه محصول یا نوشته، و یک صفحه آرشیو جدا انجام دهید. عددها فرق میکنند و افزونهای که در صفحه اصلی بیگناه است، ممکن است در آرشیو فروشگاه نیمی از زمان را ببرد.
خواندن عددها
در یک سایت معمولی روی هاست اشتراکی، اگر مجموع زمان افزونهها زیر ۱۵۰ میلیثانیه باشد جای نگرانی نیست. بین ۱۵۰ تا ۴۰۰ میلیثانیه، دو یا سه افزونه سنگین دارید. بالای ۴۰۰ میلیثانیه، مشکل ساختاری است و باید تصمیم سخت بگیرید. تعداد کوئری هم مهم است: بالای ۱۰۰ کوئری برای یک صفحه، یعنی افزونهای هست که در هر بارگذاری چند ده کوئری میزند.
اگر نمیدانید این عددها نسبت به چه چیزی بد یا خوباند، تست سرعت سایت؛ راهنمای تفسیر نتایج و اولویتبندی اصلاحات نقطه شروع بهتری است، چون TTFB را از سمت بیرون و بدون سوگیری پنل ادمین اندازه میگیرد.
نشانههای افزونه رهاشده
افزونه رهاشده لزوماً کند نیست؛ خطرش جای دیگری است. این نشانهها را جدی بگیرید:
- آخرین بهروزرسانی در مخزن وردپرس بیش از یک سال پیش بوده. وردپرس خودش این را در صفحه افزونه نشان میدهد.
- پیام «این افزونه با نسخه فعلی وردپرس آزمایش نشده است» را میبینید. یعنی توسعهدهنده حتی فایل readme را هم بهروز نکرده.
- در تب Advanced، گزینه «Auto-updates» خاکستری و غیرفعال است، چون افزونه از مخزن رسمی نمیآید.
- تعداد نصب فعال زیر ۱۰٬۰۰۰ است و آخرین بازخورد کاربران مربوط به دو سال پیش.
افزونهای که هر چهار شرط را دارد، حتی اگر سریع باشد، یک ریسک امنیتی است. اینجا اشتباه میکنند: مدیر سایت افزونه رهاشده را حذف میکند بدون اینکه ببیند قالب یا افزونه دیگری به آن وابسته است. نتیجهاش صفحه سفید یا خطای Fatal error: Uncaught Error: Call to undefined function در لاگ است. قبل از حذف، یک بار جستوجو کنید که نام توابع یا شورتکدهای آن افزونه در جای دیگری استفاده نشده باشد.
کدام را حذف کنیم: یک قاعده تصمیم
سه دسته بسازید. دسته اول افزونههایی که بدون آنها سایت از کار میافتد: فروشگاه، فرم تماس، بکاپ. دسته دوم افزونههایی که کارشان را میشود با چند خط کد در functions.php یا با قابلیت خود وردپرس انجام داد. دسته سوم آنهایی که کسی یادش نیست چرا نصب شدهاند.
دسته سوم را با خیال راحت حذف کنید. دسته دوم را یکییکی جایگزین کنید. دسته اول را دست نزنید، اما اگر یکی از آنها در Query Monitor بالای ۱۰۰ میلیثانیه میگیرد، وقتش است که جایگزین بهتری پیدا کنید.
| وضعیت افزونه | اقدام پیشنهادی | ریسک |
|---|---|---|
| فعال، سریع، بهروز | نگه دارید | ندارد |
| فعال، سنگین، بهروز | جایگزین یا تنظیم مجدد | متوسط |
| غیرفعال، نصبشده | حذف کامل | کم |
| فعال، رهاشده | حذف با بررسی وابستگی | بالا |
غیرفعال کافی نیست
افزونه غیرفعال همچنان روی دیسک است، فایلهایش بهروز نمیشوند و اگر آسیبپذیری داشته باشد، مهاجم میتواند مستقیم به فایلهایش درخواست بزند. حذف کنید، نه غیرفعال. قبل از حذف، از دیتابیس بکاپ بگیرید؛ بعضی افزونهها موقع حذف جدولهایشان را پاک میکنند و اگر بعداً بخواهید برگردانید، داده رفته است.
ممیزی را به یک روتین تبدیل کنید
یک ممیزی یکباره سه ماه بعد بیاثر میشود. هر بار که افزونهای نصب میکنید، همان لحظه در Query Monitor چک کنید که چقدر به زمان صفحه اضافه کرده. اگر بیش از ۵۰ میلیثانیه بود، بهجای نصب، دنبال راه دیگری باشید.
برای سایتهایی که ترافیک واقعی دارند، این کار را روی محیط استیجینگ انجام دهید، نه روی سایت زنده. اگر سرور اختصاصی یا VPS دارید، میتوانید با wp plugin list --status=active --format=table از طریق WP-CLI یک فهرست سریع بگیرید و آن را در یک فایل ذخیره کنید تا دفعه بعد تفاوتها را ببینید. برای سایتهایی که روی هاست لینوکس میزبانی میشوند، دسترسی SSH همین کار را ساده میکند.
اگر تعداد افزونهها زیاد است و مدیریتشان روی هاست اشتراکی وقتگیر شده، هاست وردپرس با ابزارهای مدیریت مخصوص وردپرس این چرخه را کوتاهتر میکند، اما توجه کنید که هیچ هاستی جایگزین حذف افزونه بد نوشتهشده نمیشود.
یک تله رایج در اندازهگیری
Query Monitor خودش هم مقداری سربار دارد و روی سایتهای پربازدید نباید همیشه فعال بماند. آن را فقط در زمان ممیزی فعال کنید و بعد غیرفعالش کنید. همچنین اگر کش صفحه فعال است، عددهایی که میبینید مربوط به درخواستهای بدون کش است؛ برای مقایسه منصفانه، کش را موقتاً خاموش کنید.
و یک هشدار: اگر بعد از حذف چند افزونه، سایت سریعتر نشد، احتمالاً گلوگاه جای دیگری است. با پایش آپتایم سایت؛ راهنمای عملی برای هشدار قطعی بدون خطای کاذب میتوانید بفهمید مشکل زمان پاسخ سرور است یا کد وردپرس. تفاوت این دو، مسیر رفع مشکل را کامل عوض میکند.
پرسشهای پرتکرار
چند افزونه وردپرس برای یک سایت زیاد است؟
تعداد عدد ثابتی ندارد؛ معیار، مجموع زمان اجرا و تعداد کوئری است. سایتی با ۴۰ افزونه سبک میتواند سریعتر از سایتی با ۸ افزونه سنگین باشد. اگر مجموع زمان افزونهها در Query Monitor زیر ۱۵۰ میلیثانیه بماند، تعداد مهم نیست.
افزونه غیرفعال سرعت سایت را کم میکند؟
خیر، افزونه غیرفعال کدش اجرا نمیشود و روی سرعت صفحه تأثیری ندارد. اما همچنان روی دیسک است، بهروزرسانی امنیتی نمیگیرد و میتواند هدف حمله قرار بگیرد. پس از نظر سرعت بیخطر است، از نظر امنیت نه.
چطور بفهمم کدام افزونه سایت را کند کرده؟
افزونه Query Monitor را نصب کنید و در بخش Components زمان هر افزونه را ببینید. این کار را روی چند نوع صفحه مختلف تکرار کنید، چون افزونهای که در صفحه اصلی سبک است ممکن است در آرشیو یا صفحه محصول سنگین باشد.
آیا حذف افزونه دادههایش را پاک میکند؟
بعضی افزونهها موقع حذف جدولها و تنظیماتشان را از دیتابیس پاک میکنند و بعضی نه. قبل از حذف، بکاپ کامل دیتابیس بگیرید. اگر فقط میخواهید آزمایش کنید، اول غیرفعال کنید و بعد از چند روز اگر مشکلی نبود، حذف کنید.
همین حالا Query Monitor را باز کنید و سه افزونه اول لیست را از نظر زمان اجرا ببینید. اگر هیچکدام بالای ۱۰۰ میلیثانیه نبود، مشکل سایت شما افزونه نیست و باید سراغ سرور، کش یا دیتابیس بروید.
دیدگاهها ۰
هنوز دیدگاهی ثبت نشده؛ اولین نفر باشید!