FA-TOOLS — Header Component
چرا سرعت سایت ووکامرسی من کند است

چرا سرعت سایت ووکامرسی من کند است؟ دلیل اصلی و راهکارهای تخصصی افزایش سرعت فروشگاه

خلاصه سریع و راهکار فوری:

کندی ووکامرس معمولاً ناشی از عدم پردازش صحیح درخواست‌های پویا (Dynamic) است. برعکس سایت‌های خبری یا شرکتی، صفحات سبد خرید، تسویه‌حساب و حساب کاربری کش نمی‌شوند. علت اصلی کندی به‌ترتیب: کمبود PHP Worker هاست، حجم سنگین داده‌های Autoload در دیتابیس، اجرای فایل‌های AJAX ووکامرس در تمام صفحات، و نبود Redis برای Object Caching است. رفع این ۴ مورد معمولاً ۵0 تا ۸0 درصد سرعت سایت را بهبود می‌دهد.

کندی سرعت در یک فروشگاه اینترنتی فقط باعث آزار کاربر نمی‌شود، بلکه به‌طور مستقیم درآمد شما را نابود می‌کند. طبق آمارهای واقعی گوگل، تنها ۱ ثانیه تاخیر در بارگذاری صفحات فروشگاهی می‌تواند نرخ تبدیل (Conversion Rate) را تا ۷ درصد کاهش داده و نرخ پرش (Bounce Rate) را تا ۳۰ درصد افزایش دهد. اگر کاربران شما هنگام اضافه کردن محصول به سبد خرید یا باز کردن صفحه تسویه‌حساب با لودینگ‌های طولانی مواجه می‌شوند، این مقاله دقیقاً برای حل ریشه‌ای این مشکل نوشته شده است.

چرا ووکامرس از یک سایت وردپرسی معمولی کندتر است؟

چرا ووکامرس از یک سایت وردپرسی معمولی کندتر است؟
پاسخ کوتاه: ووکامرس متکی بر داده‌های زنده و شخصی‌سازی‌شده (مثل سبد خرید، جلسات کاربر و قیمت‌های متغیر) است؛ به همین دلیل بخش زیادی از صفحات آن قابل کش‌شدن (Page Caching) نیستند و مستقیماً از منابع پردازشی سرور استفاده می‌کنند.

در یک سایت وبلاگی یا شرکتی، افزونه‌های کش مانند WP Rocket یک نسخه HTML ثابت از صفحه می‌سازند و به تمام کاربران نشان می‌دهند. در این حالت فشار روی دیتابیس و پردازنده سرور نزدیک به صفر است. اما ووکامرس این‌طور نیست.

وقتی کاربر خریدی انجام می‌دهد، محصولی را به سبد اضافه می‌کند یا وارد حساب کاربری خود می‌شود، سرور باید برای هر کاربر به‌صورت جداگانه کدهای PHP را اجرا کند و ده‌ها پرس‌وجو (Query) به پایگاه داده بفرستد. اگر هاست شما قدرت پردازش هم‌زمان این درخواست‌ها را نداشته باشد، سایت بلافاصله کند یا با خطای ۵۰۴ مواجه می‌شود.

۷ علت اصلی کندی ووکامرس و روش رفع دقیق هرکدام

۷ علت اصلی کندی ووکامرس و روش رفع دقیق هرکدام

۱. کمبود PHP Workers و هاست نامناسب اشتراکی

مهم‌ترین عامل در سرعت ووکامرس، تعداد PHP Workerهای هاست شماست. هر PHP Worker وظیفه پردازش یک درخواست نان‌کش (مثل افزودن به سبد خرید یا ورود به checkout) را بر عهده دارد. هاست‌های اشتراکی ارزان‌قیمت معمولاً تنها ۲ تا ۴ worker ارائه می‌دهند. اگر ۶ کاربر هم‌زمان روی سایت شما کلیک کنند، ۲ نفر آن‌ها در صف انتظار می‌مانند و TTFB (زمان تا دریافت اولین بایت) آن‌ها به‌شدت بالا می‌رود.

  • راهکار: برای فروشگاه‌های متوسط حداقل به ۴ تا ۸ عدد PHP Worker و برای فروشگاه‌های بزرگ (بیش از ۵۰ سفارش در روز) به هاست اختصاصی یا سرور مجازی (VPS) نیاز دارید. نسخه PHP هاست خود را حتماً روی 8.1 یا 8.2 قرار دهید تا کارایی پردازش تا ۳۰٪ افزایش یابد.

۲. عدم استفاده از Object Caching (Redis یا Memcached)

صفحات پویا کش نمی‌شوند، اما نتایج پرس‌وجوهای دیتابیس می‌توانند در حافظه موقت سرور ذخیره شوند. بدون Object Cache، ووکامرس برای هر بار بارگذاری صفحه، مجدداً تنظیمات، اطلاعات محصولات و جلسات کاربران را از روی هارد دیسک/SSD بخواند که بسیار کندتر از RAM است.

  • راهکار: از پشتیبان هاست خود بخواهید Redis را روی سرور فعال کند. سپس افزونه Redis Object Cache را نصب و فعال کنید. این کار فشار دیتابیس را در صفحات پویا تا ۷۰٪ کاهش می‌دهد.

۳. تورم و سنگینی پایگاه داده (Autoload Options و Transientها)

جدول wp_options در وردپرس حاوی داده‌هایی است که در تمام صفحات بارگذاری می‌شوند (Autoloaded Data). اگر حجم داده‌های اتولود بیشتر از ۱ یا ۲ مگابایت باشد، تمام صفحات سایت با تاخیر مواجه می‌شوند. علاوه بر این، ترنژینت‌های منقضی‌شده و داده‌های Action Scheduler ووکامرس دیتابیس را سنگین می‌کنند.

  • راهکار: با افزونه Query Monitor حجم Autoload را بررسی کنید. با استفاده از پاک‌سازی دیتابیس در افزونه WP-Optimize یا اجرای دستورات اختصاصی دیتابیس، داده‌های جدول wp_wc_admin_notes و wp_actionscheduler_actions را مرتباً پاک‌سازی کنید. برای یادگیری مدیریت بهتر زیرساخت سایت می‌توانید از قطعه کدهای وردپرس استفاده کنید.

۴. بارگذاری اسکریپت‌های ووکامرس در صفحات غیرفروشگاهی (Cart Fragments)

یکی از بزرگ‌ترین نقاط ضعف ووکامرس، اجرای درخواست AJAX با نام wc-ajax=get_refreshed_fragments در تمام صفحات سایت (حتی مقالات وبلاگ) است. این درخواست برای به‌روزرسانی آیکون سبد خرید در هدر استفاده می‌شود اما فشار سنگینی به سرور وارد می‌کند.

  • راهکار: اگر از سبد خرید آژاکسی استفاده نمی‌کنید، این ویژگی را غیرفعال کنید یا با کدهای بهینه‌سازی، بارگذاری استایل‌ها و اسکریپت‌های ووکامرس را در صفحات غیرفروشگاهی لغو (Dequeue) کنید. اگر به سفارشی‌سازی ظاهر یا عملکرد سایت علاقه دارید، بررسی اسنیپت‌های جاوا اسکریپت و همچنین قطعه کدهای کاربردی CSS بسیار کمک‌کننده خواهد بود.
// غیرفعال کردن Cart Fragments در صفحات غیر از فروشگاه برای افزایش سرعت
add_action( 'wp_enqueue_scripts', function() {
    if ( function_exists( 'is_woocommerce' ) && ! is_woocommerce() && ! is_cart() && ! is_checkout() ) {
        wp_dequeue_script( 'wc-cart-fragments' );
    }
}, 99 );

۵. افزونه‌های سنگین، چندزبانه و صفحه‌سازها

استفاده از المنتور (Elementor) همراه با ده‌ها افزودنی (Addon)، افزونه‌های فیلتر پیشرفته محصولات که کوئری‌های سنگین SQL ایجاد می‌کنند، و افزونه‌های چندزبانگی غیراستاندارد مثل WPML در صورت عدم کانفیگ درست، لود دیتابیس را تا چند برابر افزایش می‌دهند.

  • راهکار: افزونه‌های غیرضروری را کاملاً حذف کنید (فقط غیرفعال کردن کافی نیست). برای ساخت صفحات از بلوک‌های خود وردپرس (گوتنبرگ) یا قالب‌های سبک مثل Astra و GeneratePress استفاده کنید.

۶. عدم بهینه‌سازی تصاویر محصولات و عدم استفاده از CDN

صفحات آرشیو و کاتالوگ محصولات حاوی ده‌ها تصویر هستند. اگر این تصاویر با فرمت سنگین PNG یا JPEG و بدون ابعاد استاندارد بارگذاری شوند، حجم صفحه به راحتی به ۱۰ تا ۲۰ مگابایت می‌رسد.

  • راهکار: تمام تصاویر را به فرمت WebP تبدیل کنید. حجم هر تصویر محصول نباید بیشتر از ۱۰۰ تا ۱۵۰ کیلوبایت باشد. همچنین از یک CDN (مثل ابرآروان یا کلودفلر) برای تحویل سریع‌تر فایل‌های استاتیک استفاده کنید.

۷. درگاه‌های پرداخت و APIهای بیرونی کند

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

  • راهکار: ارسال پیامک‌ها را روی حالت غیرهم‌زمان (Asynchronous) یا صف وب‌هوک بگذارید و از افزونه‌های درگاه پرداخت کاملاً بهینه استفاده کنید.

جدول مقایسه: راهکارهای موثر در برابر اقداماتی که تاثیر کمی دارند

جدول مقایسه: راهکارهای موثر در برابر اقداماتی که تاثیر کمی دارند
اقدامات با تاثیر عمیق و واقعی (توصیه‌شده) اقدامات با تاثیر کم یا سطحی
ارتقای هاست و افزایش تعداد PHP Workers به بالای ۴ اتصالات نصب چند افزونه کش به‌صورت هم‌زمان (تداخل ایجاد می‌کند)
فعال‌سازی Redis Object Cache روی سرور فشرده‌سازی ساده فایل‌های HTML/CSS بدون اصلاح دیتابیس
پاک‌سازی داده‌های Autoload و ترنژینت‌های سنگین دیتابیس تغییر فونت یا پاک کردن چند برگه پیش‌فرض وردپرس
غیرفعال کردن Cart Fragments و مدیریت اسکریپت‌های ووکامرس ارتقای رم هاست بدون توجه به توان پردازشی و CPU

برنامه اقدام گام‌به‌گام برای بهینه‌سازی سرعت ووکامرس

برنامه اقدام گام‌به‌گام برای بهینه‌سازی سرعت ووکامرس

برای رسیدن به بهترین نتیجه، مراحل زیر را به ترتیب روی سایت خود پیاده‌سازی کنید:

  1. عیب‌یابی دقیق با Query Monitor: این افزونه مجانی را نصب کنید، به صفحه تسویه‌حساب بروید و زمان اجرای کوئری‌ها و کندترین کندوکاوهای SQL را شناسایی کنید.
  2. استفاده از افزونه Perfmatters یا کدهای اختصاصی: درخواست‌های غیرضروری مثل Cart Fragments، ایموجی‌های وردپرس و Embedها را غیرفعال کنید.
  3. پیکربندی افزونه کش استاندارد: افزونه‌ای مانند WP Rocket یا Litespeed Cache (اگر سرور شما لایت‌اسپید است) را نصب کنید. حتماً صفحات /cart/، /checkout/ و /my-account/ را از کش استثنا کنید.
  4. بهینه‌سازی تصاویر: فرمت تمام تصاویر محصولات را به WebP تغییر دهید و برای تصاویر پایین صفحه Lazy Load را فعال کنید.
  5. پاک‌سازی و بهینه‌سازی دیتابیس: جدول wp_options را بررسی کرده و حجم Autoload را به زیر ۸۰۰ کیلوبایت برسانید. برای برنامه‌نویسی تخصصی‌تر می‌توانید از مجموعه کاربردی‌ترین قطعه کدهای آماده کمک بگیرید.

عیب‌یابی سریع مشکلات رایج سرعت در ووکامرس

عیب‌یابی سریع مشکلات رایج سرعت در ووکامرس
مشکل ۱: صفحه تسویه‌حساب (Checkout) بیش از ۵ ثانیه طول می‌کشد.

علت و راه‌حل: معمولاً به‌دلیل محاسبه آنلاین هزینه پست یا اتصال به API سامانه پیامک است. محاسبه متغیر هزینه ارسال را ساده‌تر کنید، افزونه پیامک را به حالت غیرهم‌زمان تغییر دهید و افزونه‌های تخفیف پیشرفته را موقتاً غیرفعال کنید تا کد مخرب شناسایی شود.

مشکل ۲: پنل مدیریت وردپرس (wp-admin) به‌شدت کند است.

علت و راه‌حل: ووکامرس بخش تحلیل و آمار (WooCommerce Admin) دارد که دیتابیس را سنگین می‌کند. با افزونه Disable WooCommerce Bloat بخش آمار پیش‌فرض و نوتیفیکیشن‌های تبلیغاتی ووکامرس را در مدیریت کند و غیرفعال سازید.

مشکل ۳: سرعت سایت فقط در زمان کمپین‌ها و تخفیف‌ها افت شدید می‌کند.

علت و راه‌حل: اتمام منابع PHP Worker هاست. در طول کمپین تعداد PHP Workerها را موقتاً ارتقا دهید و حتماً Object Cache (Redis) را فعال نگه دارید تا سرور زیر بار ترافیک زانو نزند.

پرسش‌های متداول

آیا افزونه راکت (WP Rocket) برای افزایش سرعت ووکامرس کافی است؟

خیر. WP Rocket یک افزونه کش عالی برای فایل‌های استاتیک است، اما نمی‌تواند مشکل کندی دیتابیس، کمبود PHP Worker یا پردازش‌های پویا در سبد خرید را حل کند. افزونه مکمل زیرساخت است، نه جایگزین آن.

بهترین نسخه PHP برای سایت ووکامرسی کدام است؟

در حال حاضر PHP 8.1 و 8.2 بهترین عملکرد و ایمنی را برای ووکامرس ارائه می‌دهند. ارتقا از نسخه 7.4 به 8.2 می‌تواند سرعت اجرای کدهای سایت را تا ۲۰ الی ۳۰ درصد بهبود بخشد.

آیا باید صفحات سبد خرید و تسویه‌حساب را کش کنیم؟

به هیچ وجه! کش کردن این صفحات باعث اختلال شدید در نمایش محتوای سبد خرید کاربران مختلف می‌شود. این برگه ها باید همیشه در لیست استثناها (Exclusions) افزونه کش شما قرار داشته باشند.

تعداد استاندارد اضافه کردن محصول در ووکامرس چقدر است قبل از اینکه سایت کند شود؟

ووکامرس می‌تواند تا بیش از ۱۰۰,۰۰۰ محصول را بدون کندی مدیریت کند، به شرطی که دیتابیس بهینه‌سازی شده باشد، از High-Performance Order Storage (HPOS) ووکامرس استفاده کنید و سرور مناسبی داشته باشید.

Table of Contents

آخرین نوشته‌ها

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *