
گاهی سرعت لود سایت بالا است و فایل هایی مشابه زیر را در inspect مشاهده می کنید.
wp-admin/admin-ajax.php
wp-admin/admin-ajax.php?action=tm_compare_get_fragments
?wc-ajax=get_refreshed_fragments
راهکار رفع مشکل کندی وردپرس به علت فایل admin-ajax.php چیست؟
مشکل admin-ajax.php?action=tm_compare_get_fragments
معمولاً به یکی از این موارد مربوط میشود:
-
تداخل افزونهها (Plugins Conflict)
- بررسی کنید که آیا افزونهای باعث ایجاد مشکل شده است. برای این کار، همه افزونهها را غیرفعال کنید و سپس یکییکی فعال کنید تا افزونهی مشکلساز را پیدا کنید.
-
مشکل در قالب (Theme Conflict)
در بسیار از موارد مشکل از قالب سایت می باشد
- قالب را به یکی از قالبهای پیشفرض وردپرس (مثلاً
Twenty Twenty-Four
) تغییر دهید و بررسی کنید که آیا مشکل برطرف میشود یا نه.
- قالب را به یکی از قالبهای پیشفرض وردپرس (مثلاً
-
کش (Cache) و بهینهسازها
- اگر از افزونههای کش یا بهینهسازی (مثل WP Rocket، LiteSpeed Cache و…) استفاده میکنید، آنها را غیرفعال کنید و کش را پاک کنید.
-
مشکلات AJAX و JavaScript در مرورگر
- در کنسول مرورگر (F12 → Console) بررسی کنید که آیا خطایی در درخواست AJAX وجود دارد.
-
عدم بارگذاری صحیح
admin-ajax.php
- بررسی کنید که آیا فایل
admin-ajax.php
بهدرستی در دسترس است. میتوانید لینک مستقیم آن را در مرورگر باز کنید:اگر با خطای 403 یا 500 مواجه شدید، احتمالاً مشکل از مجوزها (Permissions) یا قوانین
.htaccess
است.
- بررسی کنید که آیا فایل
-
مشکل در فایل
.htaccess
- فایل
.htaccess
را به حالت پیشفرض وردپرس بازگردانید و تست کنید.
- فایل
-
بررسی لاگهای خطا
- در هاست خود به لاگهای
error_log
نگاه کنید تا ببینید آیا ارور خاصی ثبت شده است.
- در هاست خود به لاگهای
-
مشکل در تنظیمات ووکامرس یا افزونه مقایسه
- اگر این مشکل مربوط به قابلیت مقایسه محصولات در ووکامرس است، بررسی کنید که آیا افزونهی
WooCommerce TM Extra Product Options
یا سایر افزونههای مقایسه بهدرستی تنظیم شدهاند.
- اگر این مشکل مربوط به قابلیت مقایسه محصولات در ووکامرس است، بررسی کنید که آیا افزونهی
برای شناسایی افزونههایی که باعث افزایش بار روی admin-ajax.php
میشوند، میتوانید از روشهای زیر استفاده کنید:
1. بررسی درخواستهای AJAX در مرورگر
🔹 مرورگر را باز کنید و به صفحهای که کند اجرا میشود بروید.
🔹 کلید F12
را بزنید و به تب Network
بروید.
🔹 در قسمت فیلتر، admin-ajax.php
را جستجو کنید.
🔹 بررسی کنید که کدام درخواست بیشترین زمان را میگیرد و از چه افزونهای میآید.
2. استفاده از Query Monitor
📌 Query Monitor یک افزونه عالی برای بررسی درخواستهای AJAX است.
✅ پس از نصب:
- به داشبورد وردپرس بروید.
- در نوار مدیریت (
Admin Bar
)، رویQuery Monitor
کلیک کنید. - به تب
AJAX Calls
بروید و ببینید کدام افزونه بیشترین درخواست را ارسال میکند.
3. بررسی Logهای سرور
اگر به error_log
یا access_log
هاست خود دسترسی دارید، میتوانید تعداد و نوع درخواستهای AJAX را بررسی کنید.
🔹 در SSH
یا cPanel → File Manager
مسیر زیر را چک کنید:
🔹 این دستور در SSH به شما بیشترین درخواستهای admin-ajax.php
را نشان میدهد:
4. استفاده از افزونه WP Control
📌 WP Control به شما اجازه میدهد کرونجابهای وردپرس را بررسی کنید. گاهی بعضی افزونهها درخواستهای AJAX غیرضروری اجرا میکنند.
✅ بعد از نصب:
- به Tools → Cron Events بروید.
- ببینید آیا کرونجابهای مشکوکی وجود دارد که در فواصل کوتاه اجرا میشوند.
5. غیرفعالسازی افزونهها بهصورت دستی
🚀 اگر نمیتوانید افزونهی مشکلساز را پیدا کنید، روش تست دستی این است:
- همه افزونهها را غیرفعال کنید.
- یکییکی فعال کنید و در هر مرحله
admin-ajax.php
را بررسی کنید. - افزونهای که باعث افزایش بار میشود را شناسایی کنید.
6. جلوگیری از درخواستهای AJAX غیرضروری
پس از شناسایی پلاگینهای مشکلساز، میتوانید:
✅ افزونههای جایگزین کممصرفتر پیدا کنید.
✅ درخواستهای AJAX را با کش (مثل WP Rocket یا LiteSpeed Cache) بهینه کنید.
✅ اگر درخواستهای AJAX برای بروزرسانی تعداد سبد خرید ووکامرس زیاد است، cart fragments
را غیرفعال کنید:
7. افزونه Heartbeat Control
افزونه Heartbeat Control میتواند تأثیر قابلتوجهی در کاهش بار admin-ajax.php
داشته باشد، زیرا وردپرس بهصورت پیشفرض از Heartbeat API برای ارسال درخواستهای AJAX در پسزمینه استفاده میکند. این درخواستها در پیشخوان وردپرس (Dashboard)، ویرایشگر نوشتهها و فرانتاند سایت اجرا میشوند.
Heartbeat API چیست و چرا مشکلساز میشود؟
Heartbeat API وظایفی مثل ذخیره خودکار نوشتهها، قفل کردن ویرایشگر و همگامسازی فعالیتهای داشبورد را انجام میدهد.
اما برخی افزونهها از آن برای ارسال درخواستهای زیاد به
admin-ajax.php
استفاده میکنند که باعث افزایش مصرف CPU و کاهش سرعت سایت میشود.
نحوه تنظیم Heartbeat Control برای کاهش بار
نصب و فعالسازی افزونه
Heartbeat Control Plugin
پیکربندی افزونه
پس از فعالسازی، به مسیر زیر بروید:
Settings → Heartbeat Control
تنظیمات پیشنهادی:
- Dashboard: روی
Disable
بگذارید (مگر اینکه نیاز به بهروزرسانی زنده داشبورد داشته باشید). - Post Editor: مقدار را روی
60s
یا120s
تنظیم کنید (برای جلوگیری از بار زیاد هنگام ویرایش). - Frontend: اگر استفاده خاصی ندارید، روی
Disable
بگذارید.
ذخیره تغییرات و بررسی تاثیر آن
حالا در مرورگر Network → admin-ajax.php
را بررسی کنید. باید تعداد درخواستهای AJAX کاهش یافته باشد.
جایگزین: غیرفعالسازی Heartbeat API بدون افزونه
اگر نمیخواهید افزونه نصب کنید، میتوانید کد زیر را در functions.php
قالب خود قرار دهید:
این کد Heartbeat API را کاملاً غیرفعال میکند.
اگر فقط میخواهید آن را کند کنید، از این کد استفاده کنید: