روزمرگی فنی
روزمرگی فنی
خواندن ۵ دقیقه·۳ سال پیش

کندی پیشخوان وردپرس: دلایل و راهکارهای آن

ردیابی منشا کندی

بهترین، سریع‌ترین و اصولی‌ترین راه برای پی بردن به منشا کندی پیشخوان وردپرس، نصب افزونه Query Monitor است (که البته بعد از حل مشکل هم حتما باید پاک کرد، چون خودش یک تنه منابع خیلی زیادی مصرف می‌کند).

به محض نصب افزونه، شما می‌توانید از نوار بالای پشخوان مدت زمان لود صفحه و سهم هر یک از افزونه‌های مختلف در آن، Queryهای آهسته، خطاهای PHP، خطاهای API Calls و خیلی چیزهای دیگر را ببینید و بررسی کنید تا به منشا بروز کندی پیشخوان سایت برسید.

به عنوان مثال تصویر زیر، یک نمونه موردی از پیشخوان سایتی است که لود آن حدود 18 ثانیه طول می‌کشد! اطلاعات Query Monior نشان می‌دهد که از این مدت زمان 5 ثانیه‌اش مربوط به یک API Call در هسته وردپرس است (که به‌روز بودن مرورگر شما را چک می‌کند) و 10 ثانیه‌اش مربوط به خطای برقراری ارتباط News Feed یک افزونه. در نتیجه بدون این دو، مدت زمان لود پیشخوان می‌بایست حداکثر 3 ثانیه باشد. بنابراین در این مثال با پیدا شدن سرمنشا مشکل، کافی بود که با نصب یک افزونه از گیت‌هاب، این API Call مسدود شود و سپس افزونه موردنظر هم غیرفعال، پاک و جایگزین شود.

غیرفعال‌کردن جت پک (Jetpack)

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

این مشکل عینا می‌تواند در مورد افزونه‌های دیگری هم وجود داشته باشد، از جمله Site Kit by Google که با اتصال سایت شما به سرچ‌کنسول گوگل، گوگل آنالیتیکس و غیره، اطلاعات آماری را در پیشخوان نمایش می‌دهد. منتها اگر در ایران باشید، ممکن است مدتی برای شما کار کند ولی بعد از چند روز با پیام خطا و از کارافتادن افزونه و کندی پیشخوان روبرو شوید.

تنظیمات ووکامرس

در پیکربندی ووکامرس یک گزینه بدردنخور وجود دارد که به صورت پیش‌فرض فعال است و کل کارش اینست که صرفا اطلاعات تحیلی را برای استفاده‌ی خودِ ووکامرس ارسال می‌کند. پس به قسمت «پیکربندی» ووکامرس بروید، وارد تب «پیشرفته» بشوید و در زیر آن روی گزینه «امکانات» بزنید و مشابه تصویر، تیک گزینه زیر را بردارید و ذخیره تغییرات را بزنید.

پاکسازی دیتابیس

وردپرس به طور پیش‌فرض داده‌های غیرضروری زیادی را -از اصلاحات پست‌ها تا کامنت‌های پاک‌شده- در دیتابیس ذخیره می‌کند. خود قالب ورپرس و افزونه‌های مختلف (به خصوص ووکامرس) هم داده‌های موقتی زیادی را نگه می‌دارند که به تدریج باعث پر شدن فضای دیتابیس می‌شود. غیر از این ردپای خیلی از افزونه‌های بلااستفاده هم حتی بعد از پاک کردن در دیتابیس باقی می‌ماند و در نتیجه این‌ها مجموعا می‌تواند باعث کندی پیشخوان شود. بنابراین پاک کردن داده‌های موقت (Transients) و بهینه‌سازی جداول دیتابیس ضرورت پیدا می‌کند و این قابلیتی است که اکثر افزونه‌هاش کش و بهینه‌سازی سایت دارند (مثل لایت‌اسپید کش، WP Rocket و غیره).

قطع یا تعدیل Hartbeat API وردپرس

از نسخه 3.6 وردپرس به بعد، قابلیتی در آن تعبیه و معرفی شد به اسم Heartbeat API که اجازه می‌دهد که به محض ورود به پیشخوان وردپرس، بین مرورگر شما و سرور ارتباط برقرار بشود و هر 15 تا 60 ثانیه تبادل اطلاعات (دیتا) اتفاق بیفتد. خودِ این نام‌گذاری (ضربان قلب) گویای عملکرد آن است. از جمله کارکردهای این قابلیت اینست که مثلا نوشته شما پس از مدتی به طور خودکار به صورت پیش‌نویس ذخیره می‌شود، رکورد تغییرات یک پست (revisions) باقی می‌ماند یا هنگام اصلاح یک پست، نوشته‌تان به روی سایر نویسندگان قفل می‌شود تا تداخل پیدا نشود و غیره. فارغ از این جنبه‌های مثبت اما این تبادل دائمی اطلاعات به سرور فشار می‌آورد. بنابراین می‌توانید این قابلیت را کلا غیرفعال کنید یا مدت زمان تبادل اطلاعات را افزایش دهید. برای اینکار می‌توانید یا کد زیر را به فایل functions.php اضافه کنید و یا از افزونه سادهHeartbeat Control استفاده کنید.

add_action( 'init', 'stop_heartbeat', 1 ); function stop_heartbeat() { wp_deregister_script('heartbeat'); }

حذف ویجت‌های نالازم در پیشخوان وردپرس

وقتی وارد پیشخوان می‌شوید معمولا با انبوهی از ویجت‌های پیش‌فرض وردپرس یا ویجت‌های‌ افزونه‌های نصب‌شده روبرو می‌شوید که در خیلی موارد بلااستفاده هستند. مثل ویجت‌ اخبار و رویدادهای وردپرس، خوش آمدید، در یک نگاه، پیش‌نویس سریع، سلامت سایت و غیره.

برای حذف یا گزینش این ویجت‌ها نیاز به کدنویسی یا نصب افزونه‌های جانبی نیست. بلکه خیلی ساده از قسمت بالا دکمه «تنظیمات صفحه» را می‌زنید و با برداشتن تیک‌ها انتخاب می‌کنید که کدام‌یک از این ویجت‌ها نمایش داده و کدام‌یک حذف شوند.

قطع Object Cache و کش پنل مدیریت

قابلیت Object Cache، کوئری‌های دیتابیس را ذخیره می‌کند و باعث افزایش سرعت زمان اجرای PHP و کاهش بار روی دیتابیس و نهایتا لود سریع‌تر محتوا برای کاربر می‌شود.

از طرفی در برخی افزونه‌های کش (مثل لایت‌اسپید) قابلیت کش پنل مدیریت هم وجود دارد که هدفش افزایش سرعت پیشخوان سایت است، ولی گاهی نتیجه عکس می‌دهد.

بنابراین برای تست هم که شده، قابلیت‌های Object Cache و کش صفحه Admin را (در صورت وجود) غیرفعال کنید تا ببینید سرعت لود پیشخوان بهبود پیدا می‌کند یا نه.

ارتقای نسخه PHP و افزایش ظرفیت حافظه

وردپرس با زبان برنامه‌نویسی PHP ساخته شده، منتها ورژن PHP سایت شما دقیقا بستگی دارد به ورژن PHP نصب‌شده روی سرور شما. از آنجایی که نسخه‌های جدیدتر PHP نسبت به قبلی‌ها عملکرد و سرعت بالاتری دارند، پس بهتر است ورژن PHP را آپدیت کنید (فعلا باثبات‌ترین و امن‌ترین ورژن، 7.4 است).

از طرفی ممکن است کندی پیشخوان به خاطر پر شدن ظرفیت حافظه وردپرس باشد که در این حالت می‌توانید با اضافه کردن کد زیر به فایل wp-config.php آن را افزایش بدهید (البته به شرط اینکه هاست این اجازه را برای شما تعریف کرده باشد و به صورت پیش‌فرض سقف حافظه 256M نباشد) :

define(‘WP_MEMORY_LIMIT’, ‘256M’);

محافظت از صفحه ورود (لاگین) وردپرس در برابر بات‌ها

صفحات wp-login و wp-admin یکی مرسوم‌ترین اهداف حمله بات‌ها هستند. بنابراین با تغییر این صفحات یا محافظت از آن‌ها در برابر حملات، هم امنیت سایت افزایش پیدا می‌کند و هم جلوی مصرف منابع سرور توسط بات‌های اسپم در هر بار تلاش برای ورود به سایت گرفته می‌شود.

افزونه‌های امنیتی مختلف مثل Wordfence و MalCare Security و غیره این کار را برای شما انجام می‌دهند.

وندا نوژن

کندی پیشخوان وردپرس
روزها درگیر مصائب فنی، شب‌ها مشغول ثبت راه‌حل‌های یافتنی
شاید از این پست‌ها خوشتان بیاید