سیستمهای مدیریت محتوا (CMS) مانند وردپرس، با وجود انعطافپذیری بالا و جامعه کاربری گسترده، چالشهای خاص خود را دارند. به عنوان یک توسعهدهنده یا مدیر وبسایت، درک دقیق عملکرد اجزای داخلی وردپرس نقش مهمی در حفظ سرعت و عملکرد سایت دارد. یکی از فایلهایی که ممکن است در گزارشهای تست سرعت سایت بارها دیده باشید، فایل admin-ajax.php است. این فایل با اجرای مکرر در پشت صحنه، میتواند منبعی برای کندی سایت باشد، اگر بهدرستی مدیریت نشود.
کاربرد admin-ajax.php در ساختار وردپرس
در وردپرس نسخه ۳.۶، قابلیتی به نام Heartbeat API معرفی شد. هدف این API، ایجاد ارتباط مستمر بین مرورگر کاربر و سرور از طریق فایل admin-ajax.php بود. این فایل در شاخه wp-admin قرار دارد و وظیفه دارد تا درخواستهای AJAX را بدون نیاز به بارگذاری مجدد صفحه اجرا کند. قابلیتهایی مثل ذخیره خودکار، جلوگیری از ویرایش همزمان، و هشدار برای پایان زمان ورود کاربر از جمله کاربردهای Heartbeat API هستند. با اجرای مداوم این API (هر ۱۵ ثانیه)، بخشهایی از داشبورد بهروز نگه داشته میشوند، اما این موضوع میتواند در سایتهای شلوغ به مصرف بیش از حد منابع سرور منجر شود.
چرا اجرای زیاد admin-ajax.php مشکل ساز است؟
هر بار که درخواست admin-ajax.php ارسال میشود، یک اسکریپت PHP در سمت سرور اجرا شده و بخشی از CPU و حافظه را درگیر میکند. این مشکل زمانی بیشتر نمایان میشود که چندین کاربر به صورت همزمان وارد پیشخوان وردپرس شده باشند یا افزونههایی وجود داشته باشند که به صورت پیوسته از این فایل استفاده کنند. به همین دلیل، حتی اگر حجم فایل تنها چند ده بایت باشد، تکرار مداوم آن باعث افزایش فشار روی سرور و افت سرعت سایت خواهد شد. برخی از مدیران سایتها به اشتباه تصور میکنند که راهحل این مشکل تنها ارتقای هاست است؛ در حالی که با بهینهسازی تنظیمات داخلی میتوان از هزینه اضافی جلوگیری کرد.
راهکار اول: کنترل Heartbeat API با افزونه Heartbeat Control
یکی از ابزارهای رایج برای مدیریت عملکرد admin-ajax.php، افزونه Heartbeat Control است. این افزونه به شما امکان میدهد تا بازه زمانی اجرای Heartbeat را در بخشهایی مانند داشبورد، ویرایشگر نوشته یا حتی صفحات عمومی سایت تنظیم یا غیرفعال کنید.
حالتهای قابل تنظیم:
- Allow Heartbeat: فعال بودن به صورت پیشفرض
- Disable Heartbeat: غیرفعالسازی کامل (غیر پیشنهاد شده)
- Modify Heartbeat: تنظیم فاصله زمانی بین درخواستها (مثلاً هر ۳۰۰ ثانیه)
با افزایش بازه زمانی، مصرف منابع کاهش یافته و از ترافیک غیرضروری روی سرور جلوگیری میشود.
راهکار دوم: بررسی افزونههای پر مصرف
افزونههای ثالث یکی از عوامل رایج استفاده بیرویه از admin-ajax.php هستند. برای شناسایی افزونههایی که بیشترین فراخوانی را دارند، میتوانید از ابزار Inspect مرورگر و تب Network استفاده کرده و پس از بارگذاری صفحه، درخواستهای مربوط به admin-ajax.php را بررسی نمایید. در بخش "Payload" یا "Post" معمولاً متغیر action نام تابع یا افزونه استفاده کننده را مشخص میکند.
نمونه افزونهها:
- WP Notification Bar: افزونهای برای نمایش نوار اعلان که ممکن است در هر بار نمایش، درخواست AJAX ارسال کند.
- Monarch Social Sharing: افزونهای برای اشتراکگذاری شبکههای اجتماعی که برای دریافت تعداد اشتراکگذاریها، چندین درخواست به admin-ajax.php ارسال میکند.
- Counter Visitor for WooCommerce: این افزونه با هدف نمایش تعداد کاربران فعال در صفحات محصول، ممکن است هر چند ثانیه یک بار اطلاعات را بهروزرسانی کند که مصرف بالایی در پی دارد.
در این موارد، یا باید تنظیمات افزونه را بهینه کرد یا از افزونههای جایگزین سبکتر استفاده نمود.
راهکار سوم: استفاده از REST API به جای admin-ajax.php
وردپرس در نسخههای جدید خود، REST API را معرفی کرده که سبکتر، سریعتر و سازگارتر با مرورگرهای مدرن است. بسیاری از عملکردهایی که با admin-ajax.php انجام میشوند، قابلیت انتقال به REST API را دارند. این روش، پردازش بهتری در سمت سرور داشته و فشار کمتری بر منابع وارد میکند.
راهکار چهارم: بهرهگیری از کش و CDN
استفاده از افزونههای کش مانند WP Rocket یا LiteSpeed Cache به همراه شبکههای توزیع محتوا (CDN) مانند Cloudflare میتواند زمان پاسخدهی به درخواستهای AJAX را کاهش دهد. هرچند فایل admin-ajax.php معمولاً کش نمیشود، اما سایر فایلهای همراه در بارگذاری صفحه، با کش مناسب، تاثیر بهسزایی در کاهش بار سرور دارند.
جمعبندی نهایی
فایل admin-ajax.php در وردپرس یک ابزار قدرتمند برای ایجاد تعامل در سایتهای پویا است. با این حال، استفاده بیرویه یا تنظیمات نادرست آن میتواند منجر به کندی سایت و افزایش مصرف منابع شود. در این مطلب از مرکز آموزش الماس هاست آموختیم که با بررسی دقیق افزونهها، استفاده از افزونههای کنترلی مانند Heartbeat Control، بهرهگیری از REST API و ابزارهای کش، میتوان کارایی سایت را حفظ و هزینههای اضافی برای ارتقاء هاست را کاهش داد.