Farzad Roozbahani
← بازگشت به بلاگ

چطور سایت وردپرسی رو سریع کنیم بدون اینکه چیزی خراب بشه

چطور سایت وردپرسی رو سریع کنیم بدون اینکه چیزی خراب بشه

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

اول اندازه بگیر، نه حدس بزن

صفحه رو با Google PageSpeed Insights یا یه ابزار مشابه چک کن و سه معیار Core Web Vitals رو جدا جدا یادداشت کن: LCP (چقدر سریع محتوای اصلی ظاهر می‌شه)، CLS (چقدر چیدمان صفحه موقع لود جابه‌جا می‌شه)، و INP (صفحه موقع تعامل چقدر واکنش‌گراست). هر کدوم دلیل متفاوتی داره، پس "سایت کند به‌نظر می‌رسه" برای حل مشکل به‌اندازه‌ی کافی مشخص نیست.

کش، همیشه اول

کش صفحه (سرو کردن HTML کامل بدون برخورد دوباره با PHP یا دیتابیس) تقریباً تو هر سایت وردپرسی بزرگ‌ترین برد رو داره، و امن‌ترین کارم هست — چون به کد دست نمی‌زنه. اگه هاستت خودش کش سطح سرور داره (LiteSpeed Cache روی هاست‌های ایرانی خیلی رایجه)، اول از همه اونو فعال کن قبل از اینکه یه افزونه‌ی کش دوم روش سوار کنی؛ دو لایه‌ی کش که با هم تداخل دارن، بیشتر از هر مشکل دیگه‌ای باعث می‌شن بپرسی "چرا تغییرم اعمال نشد".

بعدش آبجکت کش، اگه هاستت پشتیبانی می‌کنه

آبجکت کش نتیجه‌ی کوئری‌های دیتابیس رو تو حافظه نگه می‌داره به‌جای اینکه هر بار دوباره اجراشون کنه. بیشترین اثرش رو تو سایت‌های با محتوای داینامیک زیاد داره — فروشگاه‌های ووکامرس، سایت‌های عضویتی، هر چیزی که کاربر لاگین‌شده زیاد داره. اگه هاستت از آبجکت کش پایدار (Redis یا Memcached) پشتیبانی نمی‌کنه، ازش بگذر؛ یه آبجکت کش نصفه‌نیمه از نداشتنش بدتره.

عکس‌ها: فرمت و استراتژی لود، نه فقط فشرده‌سازی

فشرده‌کردن JPEG کمک می‌کنه، ولی تبدیل به WebP و اضافه‌کردن لیزی‌لود بومی (loading="lazy" که وردپرس هسته خودش برای عکس‌های زیر فولد این کار رو انجام می‌ده) معمولاً کمک بیشتری می‌کنه. یه جای مهم که باید مراقب باشی: هیچ‌وقت عکس اصلی بالای صفحه رو لیزی‌لود نکن — این واقعاً به LCP ضربه می‌زنه، چون مرورگر باید صبر کنه تا اصلاً بفهمه باید اونو لود کنه.

قبل از بهینه‌کردن افزونه‌ها، حسابرسیشون کن

تو بعضی تنظیمات، حتی افزونه‌های غیرفعال هم موقع لود اسکن می‌شن، و هر افزونه‌ی فعالی که CSS/JS خودش رو تو هر صفحه لود می‌کنه — حتی صفحاتی که ازش استفاده نمی‌کنن — وزن اضافه‌ای می‌ذاره که کسی نخواسته. قبل از رفتن سراغ یه افزونه‌ی "همه‌چیز رو مینیفای کن"، لیست افزونه‌ها رو مرور کن و صادقانه بپرس آیا هر کدوم هنوز لازمه یا نه. معمولاً دو سه تا پیدا می‌کنم که برای یه قابلیتی نصب شده بودن که ماه‌ها پیش کنار گذاشته شده.

پاک‌سازی دیتابیس، با احتیاط

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

آخر از همه: دیفر و مینیفای JS/CSS

این مرحله عمداً آخر گذاشته شده. دیفرکردن اسکریپت‌های رندر-بلاکینگ و مینیفای CSS/JS بهبود واقعی میاره، ولی محتمل‌ترین مرحله برای خراب‌کردن چیزیه — یه اسلایدر که از کار می‌افته، یه منو که باز نمی‌شه. این کارو آخر از همه انجام بده، بعدش هر المان تعاملی صفحه رو تست کن، و همیشه راهی داشته باش که بشه اسکریپت‌های خاصی رو از بهینه‌سازی مستثنی کرد وقتی (نه اگه) چیزی خراب شد.

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