مشکل استفاده زیاد admin-ajax.php در وردپرس
Ajax فناوری وب مبتنی بر جاوا اسکریپت است که به شما در ساخت وبسایتهای تعاملی و پویا کمک میکند. وردپرس هم از طریق admin-ajax.php از Ajax برای قدرت بخشیدن به بسیاری از ویژگیهای اصلی و مدیریت خود مانند قابلیت ذخیره خودکار نوشتهها، مدیریت نشست کاربر و اعلانات بهره میگیرد.
به صورت پیشفرض وردپرس تمام فراخوانیهای Ajax را از طریق فایلی به نام admin-ajax.php که در پوشه wp-admin قرار دارد صورت میدهد.
درخواستهای بیشمار همزمان Ajax میتواند منجربه استفاده بیش از اندازه admin-ajax.php شود که خود این اتفاق منجربه کند شدن بیش از اندازه وبسایت و سرور خواهد شد. یکی از مهمترین مشکلاتی که بسیاری از وبسایتهای وردپرس غیربهینه با آن دست و پنجه نرم میکنند. در نهایت این اتفاق منجربه کندی وبسایت یا خطای HTTP 5xx (بیشتر خطای ۵۰۲ و ۵۰۴) میشود.
در این نوشته به شما اطلاعات بیشتری در خصوص عملکرد و نحوه رفتار admin-ajax.php نشان خواهیم داد و اینکه چطور میشود مسایل استفاده مربوط به admin-ajax.php را رفع کرد.
فایل admin-ajax.php چیست؟
فایل admin-ajax.php شامل کدهایی برای مسیریابی درخواستهای Ajax در وردپرس به شمار میرود. هدف اصلی آن برقراری ارتباط بین مشتری و سرور با استفاده از Ajax است. وردپرس از این فایل برای نو کردن محتوای صفحه بدون بارگذاری دوباره آن استفاده میکند که به این طریق باعث افزایش کیفیت پویایی محتوا و تجربه بهتر کاربر خواهد شد.
هسته وردپرس از Ajax برای توانمندسازی ویژگیهای بکاند استفاده میکند. برای استفاده از این قابلیت در وردپرس تنها کاری که نیاز است انجام دهید این است که یک action در وردپرس خود ثبت کنید که به فایل admin-ajax.php در وبسایت شما اشاره دارد و تعریف کنید که میخواهید چگونه مقدار بازگشت داده شود.
می توانید تعداد درخواستهای admin-ajax.php را در تب DevTools مرورگر کروم خود نیز مشاهده کنید. همچنین می توانید از طریق تب Timing در بخش Network ببینید که این پردازش این درخواستها چقدر به طول میانجامد.
برای یافتن دلیل استفاده زیاد از admin-ajax.php بایستی دو بخش را بررسی کنید: بخش فرانتاند وبسایت و بخش بکاند وبسایت.
چگونه استفاده زیاد admin-ajax.php در وردپرس را بررسی کنم
افزونههای نصب شده بر روی وردپرس یکی از معمولترین دلایل پشت استفاده بیش از اندازه از admin-ajax.php هستند. نوعا این مساله در بخش فرانتاند وبسایت دیده میشود و به شکل مداوم در گزارشات تست سرعت وردپرس نیز وجود دارد.
اما علاوه بر افزونهها، پوسته وردپرس، هسته وردپرس، مشکلات وبسرور و حملات DDoS نیز میتواند باعث استفاده زیاد admin-ajax.php در وردپرس شود.
چگونه منشا استفاده زیاد admin-ajax.php برای افزونهها و پوستهها را بیابم
توسعهدهندگان معمولا از Ajax برای ساخت افزونههای پویا و تعاملی و پوستهها استفاده میکنند. نمونهای از موارد استفاده شده از admin-ajax.php: جستجوی زنده، فیلترهای محصولات، اسکرول بینهایت، سبد خرید پویا و جعبه گفتگو.
اما چون یک افزونه از Ajax استفاده میکند در نتیجه وبسایت شما به همین دلیل کند شده است.
معمولا admin-ajax.php در پایان بارگیری صفحه بارگیری میشود. همچنین میتواند طوری تنظیم کنید که درخواستهای Ajax به صورت ناهمزمان بارگیری شوند تا تاثیر ناچیزی بر عملکرد صفحه داشته باشند. وقتیکه توسعهدهندگان از Ajax به صورت درست در وردپرس استفاده نمیکنند، اینکار میتواند باعث ایجاد مسایل و مشکلات گوناگون عملکردی برای وبسایت شود.
میتوانید از GTmetrix برای کاوش بیشتر در این خصوص استفاده کنید و علت مشکل را بیابید. برای اینکار بایستی از تب Waterfall در گزارش استفاده کرده و سپس بر روی آیتم admin-ajax.php کلیک کنید.
بررسی درخواستهای Post و Response میتواند راهنمای خوبی برای شما باشد و از این طریق بتوانید دلیل اصلی پشت این اتفاق را بیابید.
با جستجوی کوتاهی در این خصوص به نتایجی در وبسایت سازنده پوسته هم احتمالا خواهید رسید. از این رو میتوانید اینطور نتیجه بگیرید که این مشکل از پوسته یا یکی از افزونههای ضروری همراه آن نشات میگیرد.
در چنین مواردی بایستی ابتدا اطمینان یابید که پوسته و افزونههای ضروری همراه آن به آخرین نسخه بهروزرسانی شده باشند. اگر این کار باعث حل مشکل نشد، سپس بایستی یک به یک اقدام به غیرفعالسازی پوسته و افزونه بر روی وردپرس خود کنید تا ببینید که آیا مشکل حل میشود یا خیر.
برخلاف غیرفعالسازی افزونه، غیرفعالسازی پوسته در اغلب مواقع شدنی نیست. از این رو تلاش کنید که پوسته خود را بهینه کنید. برای اینکار میتوانید از کمک تیم پشتیبانی بهره بگیرید.
چگونه از منشا استفاده زیاد admin-ajax.php باخبر شویم
برخی اوقات، دادههای Post و Response در گزارشات تست سرعت ممکن است که شفاف و روشن نباشد. از این رو یافتن منشا استفاده زیاد admin-ajax.php به این آسانیها نیست. در چنین مواردی همیشه روشهای قدیمی میتواند کارگر باشد.
همه افزونههای سایت خود را غیرفعال کرده، کش وبسایت خود را در صورت وجود پاک کنید و تست سرعت را دوباره اجرا کنید. اگر همچنان admin-ajax.php وجود داشت، از این رو احتمالا مشکل از پوسته شما است. اما اگر این مشکل از بین رفت بنابراین ایراد از یکی از افزونههای فعال بر روی وبسایت شما ناشی میشود.
استفاده از محیط تست یکی از بهترین روشها برای اجرای تست بر روی وبسایت بدون تاثیرگذاری بر روی وبسایت زنده است. وقتیکه از نتایج اطمینان یافتید و مساله را حل کردید میتوانید تغییرات را بر روی وبسایت زنده خود نیز اعمال کنید.
بررسی مسایل مربوط به بکاند با admin-ajax.php
دومین دلیل شایع استفاده زیاد از admin-ajax.php تولید مداوم Heartbeat API و فراخوانی admin-ajax.php است که منجربه استفاده زیاد CPU سرور خواهد شد. نوعا، این اتفاق به دلیل لاگین کاربران بسیاری به پیشخوان مدیریت وردپرس رخ میدهد. از این رو این مساله را نمیتوان در تست سرعت وردپرس مشاهده کنید.
به صورت پیشفرض Heartbeat API هر ۱۵ ثانیه فایل admin-ajax.php را برای ذخیره خودکار نوشته و صفحات فرامیخواند. اگر از سرورهای اشتراکی استفاده میکنید بنابراین منابع زیادی بر روی سرور ندارید. اگر نوشته یا صفحهای را ویرایش میکنید و صفحه یا نوشته را برای مدت زیادی باز نگاه دارید اینکار باعث درخواستهای فزاینده Admin Ajax میشود.
برای مثال، وقتیکه پست یا صفحهای را ویرایش کرده یا مینویسید، طی یک ساعت درخواستها به ۲۴۰ بار خواهد رسید.
این تعداد درخواست بر روی بکاند وبسایت آن هم از جانب یک کاربر، درخواست بسیار زیادی محسوب میشود. حالا تصور کنید که این وبسایت چندین ویرایشگر به صورت همزمان داشته باشد. چنین وبسایتی درخواستهای Ajax بسیار زیادی تولید میکند که منجربه استفاده زیاد از منابع سرور اشتراکی به خصوص CPU میشود.
خود وردپرس مساله Heartbeat API را به مرور زمان بهینه کرده است. برای مثال، میتوانید تناوب درخواستهای ایجاد شده توسط Heartbeat API بر روی میزبان با منابع محدود را بکاهید. همچنین پس از یک ساعت با غیرفعال بودن ماوس یا کیبورد کاربر، این قابلیت غیرفعال میشود.
ترافیک بالا به دلیل حمله DDoS یا باتهای اسپم
اگر وبسایتتان تحت حمله DDoS باشد یا باتهای اسپم نیز زیاد باشند این اتفاق میتواند منجربه استفاده زیاد از admin-ajax.php شود. هرچند چنین حملاتی لزوما باعث افزایش درخواستهای Admin Ajax نخواهد شد بلکه باعث صدمه ثانوی میشود.
اگر وبسایت شما تحت حمله DDoS باشد، حتما بایستی به فکر استفاده از یک CDN بهینه مانند کلودفلر باشبد.
5 / 5. 2
دیدگاهتان را بنویسید