English

غیر فعال کردن Cron job وردپرس برای افزایش سرعت

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

قراره درباره‌ی یه قابلیت کمتر شناخته‌شده تو وردپرس حرف بزنیم؛ چیزی به اسم کران جاب یا همون WP-Cron. حالا این کران جاب چیه؟ کاری که قراره انجام بدیم اینه که بیایم این سیستم پیش‌فرض رو غیرفعال کنیم و خودمون کنترل اجرای اون وظایف رو به‌دست بگیریم. این کار نه‌تنها به کاهش فشار روی سرور کمک می‌کنه، بلکه به طرز محسوسی سرعت سایت رو هم بهتر می‌کنه.

Cron job چیست؟

توی وردپرس یه‌سری از کارها هستن که باید به صورت زمان‌بندی‌شده انجام بشن، بدون اینکه کاربر متوجهش بشه. مثلاً فرض کن شما یه پست رو مینویسی و می‌خوای فردا ساعت۲ ظهر منتشر بشه. خب چه سیستمی باید حواسش باشه که دقیقاً ساعت۲ بشه و اون پست رو منتشر کنه؟ اینجاست که WP-Cron وارد می‌شه.

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

ایده اینه که این سیستم هر چند وقت یه‌بار بیاد بررسی کنه که آیا زمان انجام یه کار مشخص فرارسیده یا نه. مثلاً نگاه می‌کنه ببینه الان ساعت از ۲ گذشته؟ اگه آره، اون پستی که برای ساعت ۲ تنظیم شده بود، منتشرش می‌کنه. اما یه نکته‌ی مهم اینجاست که این بررسی‌ها به شکل خودکار و منظم، مثلاً هر ۵ دقیقه یا هر ۱ ساعت انجام نمی‌شن؛ بلکه فقط وقتی انجام می‌شن که یکی وارد سایت بشه یا یه صفحه‌ای از سایت لود بشه. یعنی سیستم WP-Cron فقط موقعی فعال می‌شه که بازدیدکننده‌ای داشته باشی.

به این ساختار می‌گن “شبه‌کران‌جاب” یا “کران شبیه‌سازی‌شده”؛ چون برخلاف کران‌جاب‌های واقعی که توی سطح سیستم‌عامل یا سرور برنامه‌ریزی می‌شن و سر ساعت اجرا می‌شن، این یکی فقط به فعالیت کاربر بستگی داره.

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

فقط مخصوص وردپرس هست؟

سیستم کران جاب توی وردپرس فقط برای زمان‌بندی انتشار پست‌ها نیست؛ کلی کار دیگه هم انجام می‌ده که خیلی‌ها حتی ازش خبر ندارن. مثلاً یکی از مهم‌ترین کارهاش توی پلاگین‌های کش اتفاق می‌افته. اگه افزونه‌ی کش مثل WP Rocket یا LiteSpeed Cache روی سایتت نصب باشه، WP-Cron می‌تونه وظیفه‌ی پاک‌سازی کش رو طبق زمان مشخص انجام بده. یعنی بیاد فایل‌های کش قدیمی رو حذف کنه تا فضای هاست آزاد بمونه و محتوای جدید به موقع بارگذاری بشه.

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

در واقع می‌تونیم بگیم WP-Cron مغز پشت‌صحنه‌ی خیلی از کارهای خودکار وردپرسه. تقریباً مثل یه ساعت زنگ‌دار عمل می‌کنه که همیشه باید حواسش جمع باشه ببینه چی قراره کی انجام بشه.

جالب اینجاست که این فقط مخصوص وردپرس نیست. تقریباً همه‌ی سیستم‌های کامپیوتری (از سرورها گرفته تا سیستم‌عامل‌ها) یه جور «scheduler» یا سیستم زمان‌بندی دارن که وظایف مختلف رو در زمان‌های تعیین‌شده اجرا می‌کنن. وردپرس هم نسخه‌ی مخصوص خودش رو داره؛ اما خب همون‌طور که جلوتر کامل توضیح می‌دم، این نسخه یه سری اشکالات داره که باعث می‌شه توی عملکرد سایت اختلال ایجاد کنه.

چه مزایایی داره؟

حالا نکته‌ای که WP-Cron رو توی وردپرس خاص می‌کنه، اینه که برخلاف کران‌جاب‌های واقعی که مستقیماً روی سرور یا هاست اجرا می‌شن، توی وردپرس یه جورایی همه‌چی به بازدید کاربر بستگی داره. یعنی این سیستم خودش نمی‌تونه به‌صورت خودکار و مستقل از کاربر، هر چند دقیقه یک‌بار اجرا بشه.

برای مثال، فرض کن من وارد سایتی مثل mihanwp بشم و یه صفحه رو باز کنم. در همون لحظه، پشت‌صحنه‌ی وردپرس شروع می‌کنه به چک کردن کارهای زمان‌بندی‌شده‌ای که باید انجام بشن. یعنی به‌محض اینکه کاربر یه صفحه‌ای رو باز می‌کنه (چه صفحه‌ی سایت (فرانت‌اند) باشه، چه پیشخوان وردپرس (بک‌اند)) همون لحظه WP-Cron اجرا می‌شه.

در واقع، این سیستم به جای اینکه مستقل از کاربران و طبق یه زمان دقیق (مثل هر ۵ دقیقه یا هر ساعت) اجرا بشه، فقط زمانی فعال می‌شه که کسی با سایت تعامل داشته باشه. مثلاً یه نفر وارد سایت بشه، روی لینکی کلیک کنه، یا وارد پیشخوان مدیریت بشه. اون لحظه، WP-Cron بررسی می‌کنه که آیا کاری هست که موعد انجامش رسیده یا نه.

این یعنی اگه سایتت خلوت باشه و کسی واردش نشه، ممکنه بعضی از وظایف زمان‌بندی‌شده برای ساعت‌ها یا حتی روزها اجرا نشن. از اون طرف، اگه سایتت خیلی شلوغ باشه، ممکنه WP-Cron بیش از حد فعال بشه و مدام بیاد بالا، که این خودش می‌تونه فشار زیادی به سرور وارد کنه.

پس عملکرد WP-Cron توی وردپرس یه مدل خاص داره؛ یه جور شبه‌زمان‌بندی که خیلی وقت‌ها باعث می‌شه کارها یا به موقع انجام نشن، یا بیش‌ازحد و پشت‌سرهم اجرا بشن و این دقیقاً همون چیزیه که قراره تو ادامه براش یه راه‌حل اصولی پیدا کنیم.

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

خیلی وقتا آدم دنبال یه تغییر بزرگه، ولی غافل از اینکه همون جزئیات به ظاهر کوچیک می‌تونه بازی رو عوض کنه. این بحث WP-Cron و نحوه‌ی درست مدیریت اون، دقیقاً یکی از اون نکاته که شاید تو منابع رایگان یا آموزش‌های عمومی کمتر بهش پرداخته بشه، اما توی «سایت برتر» مفصل‌تر راجع بهش حرف زدیم.

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

معایب Cronjob چیه؟

خب تا اینجا متوجه شدیم که WP-Cron همون سیستمیه که کارهای زمان‌بندی‌شده‌ی وردپرس رو انجام می‌ده. حالا بیایم دقیق‌تر نگاه کنیم که این سیستم دقیقاً چه مشکلی برای سرعت سایت ایجاد می‌کنه.

ببین، WP-Cron با هر بار باز شدن یکی از صفحات سایتت فعال می‌شه. یعنی فرقی نمی‌کنه کاربر وارد صفحه‌ی اصلی بشه، یا یه مقاله رو بخونه، یا حتی وارد پنل مدیریت سایت بشی، در هر صورت، پشت‌صحنه‌ی وردپرس بلافاصله میاد سراغ اجرای وظایف زمان‌بندی‌شده. به‌ظاهر مشکلی نداره، درسته؟ ولی اینجاست که مشکل اصلی شروع می‌شه.

هر بار که WP-Cron فعال می‌شه، باید کلی درخواست (request) سمت سرور ارسال بشه. باید بررسی کنه که چه کارهایی زمانش رسیده، آیا ایمیلی باید ارسال بشه؟ آپدیتی باید چک بشه؟ کش باید خالی بشه؟ یه پست زمان‌بندی شده باید منتشر بشه؟ همه‌ی اینا باعث می‌شن که فشار زیادی روی سرور بیاد، اونم درست وقتی که کاربر منتظر باز شدن صفحه‌ست.

نتیجه‌اش چی می‌شه؟ صفحه کند لود می‌شه، زمان بارگذاری بالا می‌ره و تجربه‌ی کاربری خراب می‌شه. مخصوصاً اگه سایت پربازدیدی داشته باشی، این درخواست‌ها با هر بازدید ضربدر تعداد کاربران می‌شن و این یعنی بار زیادی روی هاست یا سرور سایتت می‌افته.

پس تا وقتی WP-Cron به همین شکل پیش‌فرض اجرا می‌شه، عملاً هر بار که یه صفحه باز می‌شه، یه سری کار اضافه هم همراهش انجام می‌شن، اونم درست همون لحظه‌ای که باید تمرکز فقط روی سریع باز شدن اون صفحه باشه. این همون چیزیه که باعث می‌شه سرعت واقعی سایتت پایین بیاد، حتی اگه از بهترین هاست یا افزونه‌های بهینه‌سازی استفاده کرده باشی.

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

غیرفعال کردن کران جاب وردپرس

خب حالا بریم سراغ مرحله‌ی عمل؛ یعنی غیرفعال کردن WP-Cron از داخل خود وردپرس. اولین کاری که باید انجام بدی اینه که وارد پنل مدیریت هاستت بشی. این پنل می‌تونه cPanel باشه یا هر سیستم مدیریت هاست دیگه‌ای که استفاده می‌کنی.

وقتی وارد شدی، دنبال بخش File Manager بگرد و بعد وارد پوشه‌ی اصلی سایتت شو، همون جایی که وردپرس نصب شده. حالا باید فایل معروف wp-config.php رو پیدا کنی، روی اون راست‌کلیک کن و گزینه‌ی Edit رو بزن تا باز بشه.

ویرایش wp-config.php
ویرایش wp-config.php

حالا یه خط کدی که پایین‌تر برات گذاشتم رو باید بهش اضافه کنی. پیشنهاد می‌کنم این کد رو دقیقاً بعد از خط WP_DEBUG اضافه کنی تا همه‌چیز مرتب و قابل فهم بمونه:

define('DISABLE_WP_CRON', true);
افزودن کد غیرفعالسازی WP_CRON
افزودن کد غیرفعالسازی WP_CRON

این کد ساده، به وردپرس می‌گه که دیگه به‌صورت خودکار و با هر بار باز شدن صفحات سایت، سیستم WP-Cron رو اجرا نکنه. یعنی دیگه با هر کلیک کاربر، اون فرآیند زمان‌بندی‌شده‌ی پشت‌صحنه اجرا نمی‌شه. همین کار ساده، می‌تونه فشار زیادی رو از دوش سرورت برداره و باعث بشه سرعت باز شدن صفحات سایتت بهتر و روان‌تر بشه.

من خودم همین روش رو روی سایتی مثل mihanmanesh.ir اجرا کردم و واقعاً تفاوتش محسوس بود. وقتی WP-Cron غیرفعال شد، سرعت بارگذاری صفحه‌ها خیلی بهتر شد و دیگه اون تأخیرای آزاردهنده نبود. فقط با همین یه خط کد، یه قدم جدی برای بهینه‌سازی سرعت سایتت برداشتی.

فعالسازی Cronjob وردپرس از طریق هاست

خب حالا شاید این سؤال برات پیش بیاد ما که سیستم WP-Cron رو غیرفعال کردیم، پس الان چی می‌شه؟ یعنی دیگه اون کارهای زمان‌بندی‌شده مثل انتشار پست، پاک‌سازی کش، ارسال ایمیل یا هر چیز دیگه‌ای اجرا نمی‌شن؟ درسته که WP-Cron دیگه به شکل خودکار با باز شدن صفحات اجرا نمی‌شه، اما ما قراره خودمون کنترلش رو به دست بگیریم، با یه روش حرفه‌ای‌تر و بهینه‌تر، ساخت کران‌جاب واقعی روی هاست.

برای این کار، وارد کنترل پنل هاستت می‌شی؛ حالا چه CPanel باشه، چه DirectAdmin یا هر کنترل‌پنل دیگه‌ای، مهم نیست. دنبال بخشی به اسم Cron Jobs بگرد. معمولاً این بخش توی همون داشبورد هاست قابل دسترسیه یا می‌تونی از سرچ پنل استفاده کنی و راحت پیداش کنی.

پیدا کردن Cron Jobs
پیدا کردن Cron Jobs

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

حالا چطور این کارو انجام بدی؟ خیلی ساده‌ست، در قسمت زمان‌بندی، بازه‌ی اجرا رو روی هر ۵ دقیقه تنظیم کن. این بازه معمولاً برای اکثر سایت‌ها کاملاً کافیه، نه اون‌قدر دیر که کارها عقب بیفتن، نه اون‌قدر زود که فشار بیار به سرور. بعدش، توی قسمت Command باید دستور اجرای کران‌جاب وردپرس رو وارد کنی. کدی که پایین براتون نوشتم رو کافیه کپی کنی و توی Command قرارش بدی؛ مثلاً:

wget -q -O - https://yourdomain.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

نکته

یادت نره به‌جای yourdomain.com، آدرس دقیق سایت خودتو وارد کنی.

آدرس دقیق سایت خودتون
آدرس دقیق سایت خودتون

در نهایت، روی گزینه‌ی Add New Cron Job کلیک کن تا این زمان‌بندی ثبت بشه. از این لحظه به بعد، سرور شما دقیقاً هر ۵ دقیقه یک‌بار، فایل wp-cron.php رو اجرا می‌کنه و تمام وظایف زمان‌بندی‌شده سایتت به‌موقع و بدون دخالت بازدیدکننده انجام می‌شن.

اینجا دقیقاً جادوی اصلی اتفاق می‌افته، سرعت سایت می‌ره بالا چون دیگه هیچ وظیفه‌ای موقع لود صفحه انجام نمی‌شه. همه‌چیز سر وقت، منظم و مستقل از کاربران اجرا می‌شه. این یعنی یه سایت سریع‌تر، بهینه‌تر و حرفه‌ای‌تر.

صحبت آخر

خب حالا که تا اینجای مقاله با من همراه بودی، احتمالاً کاملاً متوجه شدی که چرا غیرفعال کردن WP-Cron توی وردپرس یه حرکت فوق‌العاده حرفه‌ای برای افزایش سرعت سایته. اگه بخوام خیلی خلاصه بگم، ما با یه خط کد ساده توی فایل wp-config.php، اومدیم اون سیستم زمان‌بندی خودکار وردپرس رو که با هر بار باز شدن صفحه اجرا می‌شد، غیرفعال کردیم. بعدش هم یه کران جاب واقعی روی هاست ساختیم که دقیق، منظم و بدون فشار اضافی روی سرور، اون وظایف زمان‌بندی‌شده رو هر ۵ دقیقه یک‌بار اجرا کنه.

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

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

ترفندهایی که از دل تجربه‌های واقعی و عملی اومدن و می‌تونن کمک کنن سایتت از یه سایت معمولی به یه سایت سریع، حرفه‌ای و کاملاً استاندارد تبدیل بشه. پس اگه این مقاله برات مفید بود، بدون که کلی نکته طلایی دیگه هم هست که هنوز نگفتم و هر کدوم‌شون می‌تونه یه جهش جدی برای سایتت باشه. شاد و سربلند باشید.🙂

نظر شما در این مورد چیه؟

⚠️ دسترسی محدود

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