فروشگاههای ووکامرس سنگینتر از سایتهای وردپرسی معمولی هستند: صفحات سبد خرید، پرداخت و حساب کاربری کش نمیشوند، هر جستجو و فیلتر کوئری دیتابیس سنگینی اجرا میکند و افزونههای زیادی درگیرند. نتیجه، فروشگاهی است که در روزهای عادی قابل قبول است اما در کمپینها کند میشود یا از کار میافتد. در این راهنما افزایش سرعت ووکامرس را از کش و دیتابیس تا تصاویر، اسکریپتها و سرور مرور میکنیم.
فهرست مطالب
چرا ووکامرس کند میشود؟
- صفحات پویا: سبد خرید، پرداخت و حساب کاربری برای هر کاربر متفاوتاند و کش صفحه برای آنها کار نمیکند.
- دیتابیس سنگین: متادیتای محصولات و سفارشها، بهخصوص در ساختار قدیمی ذخیره سفارش، جدولهای بسیار بزرگی میسازد.
- افزونههای زیاد: درگاه پرداخت، حملونقل، فیلتر، مقایسه و بازاریابی؛ هرکدام اسکریپت و کوئری اضافه میکنند.
- کارهای پسزمینه: ایمیل سفارش، بهروزرسانی موجودی و همگامسازی با سرویسهای خارجی.
اصول عمومی سرعت وردپرس را در افزایش سرعت وردپرس توضیح دادهایم؛ این مقاله روی نکات خاص فروشگاه تمرکز دارد.
اندازهگیری درست
فقط صفحه اصلی را تست نکنید. این صفحات را جداگانه بسنجید: صفحه محصول، دستهبندی با فیلتر، جستجو، سبد خرید و پرداخت. زمان پاسخ سرور (TTFB) را هم برای کاربر مهمان و هم برای کاربر واردشده اندازه بگیرید. افزونه Query Monitor کوئریهای کند و افزونههای پرمصرف هر صفحه را نشان میدهد؛ آن را فقط برای مدیران فعال کنید.
کش صفحه با استثناهای درست
صفحات محصول، دستهها و صفحه اصلی برای کاربران مهمان باید کش شوند. اما این صفحات هرگز نباید کش شوند: سبد خرید، پرداخت، حساب کاربری و هر درخواستی که کوکیهای نشست ووکامرس (مثل woocommerce_items_in_cart و wp_woocommerce_session_) را دارد. افزونههای کش معتبر، مثل LiteSpeed Cache و WP Rocket، این استثناها را بهطور پیشفرض برای ووکامرس اعمال میکنند؛ اگر کش را در سطح سرور یا CDN خودتان تنظیم میکنید، آنها را دستی تعریف کنید. کش اشتباه میتواند سبد خرید یک مشتری را به مشتری دیگر نشان دهد.
Object Cache با Redis
برای صفحاتی که کش کامل نمیشوند، Object Cache نتایج کوئریهای تکراری را در حافظه نگه میدارد و بار دیتابیس را بهشدت کم میکند. روی VPS، Redis را نصب و با افزونه Redis Object Cache یا قابلیت داخلی افزونه کش فعال کنید:
sudo apt install -y redis-server php8.3-redis
sudo systemctl enable --now redis-server
wp plugin install redis-cache --activate
wp redis enable
Redis فقط باید روی 127.0.0.1 گوش دهد. نام بسته PHP را با نسخه نصبشده هماهنگ کنید. در هاستهای اشتراکی، بررسی کنید آیا Redis یا Memcached در دسترس است.
HPOS و دیتابیس
- ذخیرهسازی سفارشها با کارایی بالا (HPOS): ووکامرس سفارشها را بهجای جدول عمومی نوشتهها، در جدولهای اختصاصی ذخیره میکند که کوئریهای سریعتری دارند. در فروشگاههای جدید پیشفرض است؛ در فروشگاههای قدیمی، پس از اطمینان از سازگاری افزونهها، آن را از تنظیمات ووکامرس › پیشرفته › ویژگیها فعال و دادهها را همگام کنید. قبل از این کار بکاپ بگیرید.
- پاکسازی: نشستهای منقضی، Transientها، بازبینیهای قدیمی محصولات و لاگهای افزونهها را پاک کنید.
- Autoload: گزینههایی که افزونههای حذفشده با autoload باقی گذاشتهاند، هر درخواست را کند میکنند.
- تنظیمات MySQL:
innodb_buffer_pool_sizeمتناسب با حجم داده؛ روشها در بهینهسازی MySQL و MariaDB.
Cart Fragments و درخواستهای AJAX
قابلیت «Cart Fragments» ووکامرس با یک درخواست AJAX تعداد اقلام سبد را در هدر بهروز میکند. در برخی قالبها این درخواست در همه صفحات، حتی برای کاربرانی که سبد خالی دارند، اجرا میشود و کش صفحه را بیاثر میکند. در نسخههای جدید ووکامرس رفتار آن بهینهتر شده، اما بررسی کنید روی سایت شما چند بار و در کدام صفحات اجرا میشود و در صورت امکان، آن را به صفحاتی که لازم است محدود کنید. فراخوانیهای admin-ajax.php افزونههای دیگر را هم در تب Network مرورگر بررسی کنید.
جستجو و فیلتر محصولات
جستجوی پیشفرض وردپرس و فیلترهای چندگانه ویژگیها، روی فروشگاههای با هزاران محصول کوئریهای بسیار سنگینی میسازند. راهکارها:
- استفاده از افزونه فیلتری که جدول ایندکس اختصاصی میسازد.
- برای فروشگاههای بزرگ، موتور جستجوی جداگانه مثل Elasticsearch، OpenSearch یا Meilisearch.
- محدود کردن نرخ درخواست صفحات جستجو برای رباتها.
تصاویر و قالب
- تصاویر محصول را به WebP یا AVIF تبدیل و با ابعاد واقعی نمایش آپلود کنید.
- Lazy Load برای تصاویر پایین صفحه، اما نه برای تصویر اصلی محصول.
- قالب سبک و مخصوص ووکامرس؛ قالبهای چندمنظوره سنگین، اسکریپتهای زیادی بارگذاری میکنند.
- اسکریپتهای افزونهها را فقط در صفحاتی بارگذاری کنید که لازماند؛ مثلاً اسکریپت درگاه پرداخت فقط در صفحه پرداخت.
کارهای پسزمینه
- WP-Cron را غیرفعال و با cron سیستم اجرا کنید تا کارهای زمانبندیشده در درخواست مشتریان اجرا نشوند:
*/5 * * * * cd /var/www/example.com && wp cron event run --due-now --quietهمراه با
define('DISABLE_WP_CRON', true);در wp-config.php. توضیح در cron و systemd timers. - صف Action Scheduler ووکامرس را از ابزارها › وضعیت › کارهای زمانبندیشده بررسی کنید؛ هزاران کار ناموفق یا معوق نشانه مشکل است.
- ارسال ایمیلها را به یک سرویس SMTP معتبر بسپارید؛ ارسال کند ایمیل، ثبت سفارش را کند میکند.
هاست و سرور مناسب
یک فروشگاه کوچک روی هاست وردپرس خوب با LiteSpeed و Redis بهخوبی کار میکند. با افزایش محصولات، سفارشها و ترافیک کمپینها، سرور مجازی با منابع مشخص، دیسک NVMe و امکان تنظیم PHP-FPM و دیتابیس لازم میشود. نشانهها و معماری مناسب هر سطح ترافیک را در VPS یا هاست اشتراکی ببینید.
سوالات متداول
چرا صفحه پرداخت ووکامرس کند است؟
این صفحه کش نمیشود و اسکریپتهای درگاه، محاسبه حملونقل و تخفیف را اجرا میکند. Object Cache، کاهش افزونهها و بررسی درخواستهای خارجی به سرویسهای حملونقل یا پیامک معمولاً بیشترین اثر را دارند.
آیا HPOS را در فروشگاه قدیمی فعال کنم؟
بله، اما پس از بکاپ کامل و بررسی سازگاری افزونهها در صفحه تنظیمات ویژگیها. ابتدا روی نسخه آزمایشی تست کنید.
برای فروشگاه ووکامرس چه سروری لازم است؟
برای فروشگاه کوچک تا متوسط، هاست وردپرس قوی یا VPS با ۲ تا ۴ هسته و ۴ تا ۸ گیگابایت RAM همراه با Redis. فروشگاههای پرترافیک به منابع بیشتر و جداسازی دیتابیس نیاز پیدا میکنند.
آیا CDN برای ووکامرس مشکل ایجاد میکند؟
اگر صفحات پویا از کش مستثنی شوند، نه. فایلهای ثابت و تصاویر را از CDN تحویل دهید و کش HTML را با احتیاط و با استثناهای کامل فعال کنید.
میزبانی فروشگاه ووکامرس
هاست ووکامرس تراست هاست برای فروشگاههای در حال رشد و سرورهای مجازی برای فروشگاههای پرترافیک آمادهاند؛ برای بهینهسازی تخصصی هم خدمات مدیریت سرور در دسترس است.