چرا سایت وردپرسی شما کند است و از کجا شروع کنید
سایت شما با PageSpeed امتیاز ۴۵ گرفته و تصاویر دیر لود میشوند. یا شاید TTFB بالای ۱.۵ ثانیه دارید و کاربر قبل از دیدن محتوا صفحه را میبندد. این وضعیت را میشناسید: افزونههای زیادی نصب کردهاید، هر کدام ادعای بهینهسازی دارند، اما نتیجه تغییر نکرده است.
قبل از هر تغییری، باید وضعیت فعلی را اندازه بگیرید. بدون عدد اولیه، نمیتوانید تأثیر کارتان را بسنجید.
برای اندازهگیری، از GTmetrix یا PageSpeed Insights استفاده کنید. یک ابزار خط فرمان هم دارید که دقیقتر است:
curl -o /dev/null -s -w "TTFB: %{time_starttransfer}s\nTotal: %{time_total}s\n" https://example.com
این دستور را سه بار اجرا کنید و میانگین بگیرید. عدد TTFB بالای ۶۰۰ میلیثانیه یعنی مشکل از سمت سرور است، نه قالب یا افزونه.
نکته مهم: اگر سایت شما روی هاست وردپرس اشتراکی است، نتایج را در ساعات شلوغ (۹ شب تا ۱۲ نیمهشب به وقت ایران) هم بررسی کنید. سرعت در ساعت ۳ صبح تقریباً همیشه خوب است.
اولین قدم: افزونه کش و تنظیم درست آن
کش سادهترین و پربازدهترین کار است. اما نصب افزونه کافی نیست. بیشتر مردم افزونه را نصب میکنند و تنظیمات پیشفرض را رها میکنند. این اشتباه است.
از بین افزونههای کش، WP Rocket (تجاری) و LiteSpeed Cache (رایگان، فقط روی لایتاسپید) را پیشنهاد میکنم. اگر هاست شما Apache یا Nginx است، WP Super Cache یا W3 Total Cache گزینههای رایگان هستند.
تنظیماتی که باید تغییر دهید:
- Page Cache را فعال کنید و زمان انقضا را روی ۳۶۰۰ ثانیه بگذارید
- Minify HTML و CSS را روشن کنید، اما جاوااسکریپت را با احتیاط. ترکیب فایلهای JS گاهی باعث شکستن اسکریپتها میشود
- Lazy Load تصاویر را فعال کنید
- کش مرورگر (Browser Cache) را با max-age حداقل ۲۶۷۸۴۰۰ ثانیه (یک ماه) تنظیم کنید
بعد از فعالسازی کش، دوباره TTFB را اندازه بگیرید. اگر عدد به زیر ۳۰۰ میلیثانیه رسید، یعنی مشکل اصلی حل شده است.
اینجا اشتباه میکنند: کش را فعال میکنید اما صفحه هنوز کند است
نشانه این مشکل: TTFB پایین آمده اما Total Time هنوز بالاست. یعنی HTML سریع میآید اما فایلهای CSS و JS دیر لود میشوند. این یعنی کش صفحه کار میکند اما کش مرورگر یا CDN را فعال نکردهاید. تنظیمات Browser Cache را چک کنید و اگر هاست شما CDN دارد، آن را روشن کنید.
دیتابیس: جایی که بیشتر سایتها آن را فراموش میکنند
وردپرس هر بار که صفحهای لود میشود، چند کوئری به دیتابیس میزند. اگر دیتابیس شلوغ باشد، این کوئریها کند میشوند. مشکل اینجاست که بیشتر مدیران سایت هیچوقت به دیتابیس نگاه نمیکنند.
اولین کار: جداول را بررسی کنید. از phpMyAdmin یا خط فرمان:
mysql -u username -p database_name -e "SHOW TABLE STATUS;"
به ستون Data_free نگاه کنید. اگر عدد بالایی میبینید، یعنی جداول تکهتکه شدهاند. این اتفاق بعد از حذف و ویرایش زیاد رخ میدهد.
برای بهینهسازی جداول، از دستور زیر استفاده کنید:
mysql -u username -p database_name -e "OPTIMIZE TABLE wp_options, wp_posts, wp_postmeta;"
این کار را ماهی یک بار انجام دهید. اما مراقب باشید: اگر سایت شما بزرگ است (بیش از ۱۰۰ هزار نوشته)، بهینهسازی ممکن است چند دقیقه طول بکشد و سایت را موقتاً از دسترس خارج کند. در این حالت، آن را در ساعت کمبازدید انجام دهید.
دومین کار: جدول wp_options را بررسی کنید. این جدول معمولاً بزرگترین مشکل را ایجاد میکند. افزونههای حذفشده گاهی دادههای خود را در این جدول باقی میگذارند. با این کوئری میبینید چه چیزی آنجا است:
SELECT option_name, LENGTH(option_value) AS size FROM wp_options ORDER BY size DESC LIMIT 20;
اگر ردیفهایی با حجم زیاد از افزونههای حذفشده میبینید، آنها را پاک کنید. اما قبل از پاک کردن، از دیتابیس بکاپ بگیرید. این کار را جدی بگویید.
یک معاوضه واقعی: پاکسازی دیتابیس در برابر ریسک
افزونههای پاکسازی دیتابیس مثل WP-Optimize کار را ساده میکنند، اما گاهی ردیفهایی را پاک میکنند که نباید. مثلاً دادههای session کاربران لاگینشده را حذف میکنند و کاربران را بیاجبار از حساب خارج میکنند. من ترجیح میدهم پاکسازی را دستی انجام دهم، فقط روی جداول مشخص. اگر وقت ندارید، افزونه را با تنظیمات محدود (فقط حذف revisionها و دادههای افزونههای حذفشده) اجرا کنید.
نسخه PHP: سادهترین بردی که نادیده میگیرید
وردپرس روی PHP 7.4 حدود ۳ برابر سریعتر از PHP 5.6 اجرا میشود. نسخه PHP 8.2 هم نسبت به 7.4 حدود ۲۰ تا ۳۰ درصد سریعتر است. این عدد را با یک بنچمارک ساده میتوانید ببینید.
اگر سایت شما هنوز روی PHP 7.4 یا پایینتر است، اول از همه این را عوض کنید. اما قبل از تغییر، این کارها را انجام دهید:
- از سایت و دیتابیس بکاپ کامل بگیرید
- همه افزونهها و قالب را به آخرین نسخه بهروزرسانی کنید
- در محیط staging (اگر دارید) PHP را عوض کنید و تست کنید
- اگر محیط تست ندارید، PHP را عوض کنید و بلافاصله سایت را چک کنید
خطای رایج بعد از ارتقای PHP: صفحه سفید یا خطای 500. این معمولاً به خاطر یک افزونه قدیمی است که با نسخه جدید سازگار نیست. در این حالت، از طریق FTP یا فایلمنیجر هاست، پوشه wp-content/plugins را موقتاً به اسم دیگر تغییر نام دهید تا همه افزونهها غیرفعال شوند. سایت بالا میآید و میتوانید افزونهها را یکییکی فعال کنید.
برای بررسی نسخه PHP فعلی، در پیشخوان وردپرس به «ابزارها» و «سلامت سایت» بروید. یا از خط فرمان:
php -v
اگر هاست شما از PHP 8.2 یا 8.3 پشتیبانی میکند، به آن مهاجرت کنید. این کار را در هاست لینوکس معمولاً از طریق کنترلپنل و در چند کلیک انجام میشود.
تصاویر: سنگینترین بخش هر صفحه
تصاویر معمولاً ۶۰ تا ۷۰ درصد وزن یک صفحه را تشکیل میدهند. یک تصویر ۲ مگابایتی که با فرمت PNG آپلود شده، میتواند سرعت کل صفحه را خراب کند.
قانون ساده: تصاویر را قبل از آپلود بهینه کنید. ابزارهایی مثل Squoosh یا ImageOptim حجم را بدون افت کیفیت محسوس کم میکنند. فرمت WebP را انتخاب کنید؛ در بیشتر موارد ۳۰ تا ۵۰ درصد سبکتر از JPEG است.
برای تصاویری که قبلاً آپلود شدهاند، افزونههایی مثل ShortPixel یا Imagify کار را انجام میدهند. اما اینجا هم یک محدودیت وجود دارد: نسخه رایگان این افزونهها سهمیه ماهانه محدودی دارد (مثلاً ۱۰۰ تصویر در ماه). اگر سایت شما هزاران تصویر دارد، باید نسخه پولی بخرید یا تصاویر را دستی بهینه کنید.
علاوه بر بهینهسازی، ابعاد تصویر را هم بررسی کنید. اگر تصویری با عرض ۴۰۰۰ پیکسل در یک ستون ۶۰۰ پیکسلی نمایش داده میشود، مرورگر مجبور است فایل بزرگ را دانلود کند و بعد کوچکاش کند. این کار بیهوده است.
ترتیب کارها: چه چیزی را اول انجام دهید
اگر وقت محدودی دارید، این ترتیب را دنبال کنید:
- نسخه PHP را به 8.2 یا بالاتر ارتقا دهید (اگر هنوز این کار را نکردهاید)
- یک افزونه کش نصب و تنظیم کنید
- دیتابیس را بهینه کنید
- تصاویر صفحه اول (همانهایی که کاربر اول میبیند) را بهینه کنید
بعد از هر مرحله، TTFB و Total Time را اندازه بگیرید. نتیجه را یادداشت کنید. این کار به شما نشان میدهد کدام مرحله بیشترین تأثیر را داشته است.
برای اندازهگیری دقیقتر و تفسیر نتایج، راهنمای تست سرعت سایت را بخوانید. اگر سایت شما مکرراً از دسترس خارج میشود و این روی سرعت تأثیر میگذارد، پایش آپتایم سایت را هم بررسی کنید.
پرسشهای پرتکرار
بهترین افزونه کش برای وردپرس چیست؟
WP Rocket بهترین گزینه تجاری است و LiteSpeed Cache بهترین گزینه رایگان، به شرطی که هاست شما از لایتاسپید استفاده کند. اگر هاست شما Nginx یا Apache است، WP Super Cache انتخاب مطمئنی است. هیچ افزونهای را بدون تنظیم دستی رها نکنید؛ تنظیمات پیشفرض معمولاً کافی نیستند.
چرا TTFB سایت وردپرسی من بالاست؟
TTFB بالا یعنی سرور زمان زیادی برای تولید پاسخ صرف میکند. دلایل رایج: نسخه PHP قدیمی، دیتابیس شلوغ، افزونه سنگین، یا منابع محدود هاست اشتراکی. ابتدا نسخه PHP را چک کنید، بعد دیتابیس را بهینه کنید و در نهایت افزونههای غیرضروری را غیرفعال کنید.
آیا بهینهسازی دیتابیس وردپرس بیخطر است؟
اگر از ابزارهای معتبر استفاده کنید و قبل از هر کاری بکاپ بگیرید، بیخطر است. اما افزونههای پاکسازی خودکار گاهی دادههای مهم را حذف میکنند. روش دستی با کوئریهای OPTIMIZE TABLE امنتر است. فقط جداولی را بهینه کنید که واقعاً تکهتکه شدهاند.
چند وقت یک بار باید دیتابیس وردپرس را بهینه کنم؟
برای سایتهای معمولی، ماهی یک بار کافی است. اگر سایت شما پربازدید است یا محتوای زیادی تولید میشود، هر دو هفته یک بار. بهینهسازی بیش از حد هم ضرر دارد؛ اگر دیتابیس کوچک و سالم است، دست زدن به آن فقط ریسک بیدلیل ایجاد میکند.
دیدگاهها ۰
هنوز دیدگاهی ثبت نشده؛ اولین نفر باشید!