متجر WooCommerce أثقل من موقع ووردبريس عادي لأنّه مليء بالصفحات الديناميكية (السلة، الدفع، حسابي) التي لا تُكاش، والجلسات، واستعلامات قاعدة البيانات المتراكمة، و«شظايا السلة» (cart fragments) التي تطلق طلب AJAX في كل صفحة. أكبر مكسب يأتي من استضافة مناسبة بعمّال PHP كافين + كاش صفحة يستثني السلة/الدفع/الحساب + كاش كائنات Redis + تفعيل HPOS لتخزين الطلبات. أضِف ضغط الصور وتحويلها لـ AVIF/WebP، وربط CDN للأصول، وتعطيل cart fragments على الصفحات التي لا تحتاجها، وتنظيف الجلسات والـtransients المتراكمة. القاعدة: عالِج الأثقل أثرًا أولًا، واستثنِ صفحات المعاملات من الكاش دائمًا، وقِس قبل/بعد بأداة خارجية وأخرى داخلية.
بطء المتجر ليس مشكلة تجميلية — إنّه يكلّف مبيعات مباشرة. زائر ينتظر صفحة منتج بطيئة يغادر قبل أن يضيف للسلة، وعميل يواجه صفحة دفع متعثّرة يتخلّى عن طلبه عند آخر خطوة. WooCommerce منصّة رائعة لكنها بطبيعتها أثقل من مدوّنة بسيطة، وتسريعها يحتاج فهمًا لِما يجعلها ثقيلة تحديدًا — لا مجرّد تطبيق نصائح تسريع عامّة. إن كنت في بداية الطريق فابدأ من دليل إطلاق متجر WooCommerce لبناء أساس سليم، وللمبادئ العامة لتسريع أي موقع راجع الدليل الشامل لتسريع موقعك. هنا نغوص في خصوصيات المتاجر: الجلسات، شظايا السلة، استثناءات الكاش، HPOS، وبطء الدفع ولوحة الإدارة.
لماذا متجر WooCommerce أثقل من موقع ووردبريس عادي؟
المدوّنة العادية تعرض محتوى ثابتًا نسبيًا يمكن كاشه بالكامل: المقال نفسه لكل الزوّار. المتجر مختلف جوهريًا — كثير من صفحاته مخصّص لكل زائر ولا يُكاش، وكل طلب غير مكاش يعني تشغيل PHP والاستعلام من قاعدة البيانات من الصفر.
مكوّنات المتجر التي تثقل الأداء
| المكوّن | لماذا يثقل | الأثر |
|---|---|---|
| السلة والدفع وحسابي | صفحات مخصّصة لكل مستخدم لا تُكاش | كل زيارة تشغّل PHP + استعلامات كاملة |
| الجلسات (Sessions) | WooCommerce ينشئ جلسة لكل زائر يلمس السلة | صفوف تتراكم في قاعدة البيانات |
| شظايا السلة (Cart Fragments) | طلب AJAX إلى admin-ajax.php في كل صفحة لتحديث عدّاد السلة | حمل إضافي على كل صفحة حتى الرئيسية |
| استعلامات المنتجات | فلترة، فرز، مخزون، أسعار متغيّرة، ضرائب | استعلامات أثقل من جلب مقال |
| جداول الطلبات | تتراكم الطلبات والبيانات الوصفية بمرور الوقت | استعلامات إدارة بطيئة (يعالجها HPOS) |
| إضافات المتجر | بوابات دفع، شحن، ضرائب، تسويق | كل واحدة تحمّل سكربتات واستعلامات |
الفرق العملي في الكاش
في مدوّنة، كاش الصفحة يخدم 95% من الزيارات من نسخة جاهزة. في متجر، الزائر الذي يتسوّق فعليًا يتنقّل بين صفحات لا تُكاش (السلة، الدفع)، فيقع العبء على الخادم. لهذا السبب تحتاج المتاجر طبقات كاش إضافية (كاش الكائنات) واستضافة بموارد أعلى من مدوّنة بنفس عدد الزيارات. ولفهم أنواع الكاش بعمق ومتى تستخدم كلًّا منها راجع أنواع الكاش ومتى تستخدم كلًا.
كيف تؤثّر الاستضافة في أداء WooCommerce؟
لا كاش يصلح استضافة عاجزة عن خدمة الصفحات الديناميكية بسرعة. وبما أنّ المتجر يولّد صفحات غير مكاشة باستمرار (كل عملية تسوّق فعلية)، فإنّ قوّة الخادم تظهر في زمن الذروة تحديدًا — لحظة الحملات والعروض حين يتدفّق المشترون معًا.
المواصفات التي تصنع الفرق للمتاجر
- عمّال PHP (PHP Workers) كافون. هذا أهمّ إعداد للمتاجر وأكثره تجاهلًا. كل عامل PHP يخدم طلبًا واحدًا غير مكاش في لحظته. إن كان لديك عاملان وجاء خمسة مشترين معًا إلى صفحة الدفع، انتظر ثلاثة في الطابور. المتاجر تحتاج عمّالًا أكثر من المدوّنات لأنّ نسبة أكبر من طلباتها لا تُكاش.
- أقراص NVMe لسرعة قراءة قاعدة البيانات — والمتجر كثير الاستعلامات.
- خوادم LiteSpeed أو Nginx مضبوط بدل Apache التقليدي: أسرع في خدمة PHP، ولـLiteSpeed كاش مدمج على مستوى الخادم (LSCache) يدعم استثناءات WooCommerce جاهزة.
- إصدار PHP حديث (8.2 فأعلى). القفزة من PHP 7.4 إلى 8.x قد ترفع الأداء 20–40% دون لمس سطر كود — مكسب مجاني للمتاجر الثقيلة بالمنطق.
- ذاكرة كافية (RAM) لتشغيل Redis لكاش الكائنات بجانب PHP وقاعدة البيانات.
مقارنة بيئات الاستضافة لمتجر WooCommerce
| نوع الاستضافة | TTFB في الذروة | عمّال PHP | Redis جاهز | الأنسب لـ |
|---|---|---|---|---|
| مشتركة اقتصادية | مرتفع/متذبذب | قليل (2–3) | غالبًا لا | متجر صغير جدًا/تجريبي |
| مشتركة على LiteSpeed | جيّد | متوسط | أحيانًا | متجر ناشئ بزيارات معتدلة |
| VPS مُدار | جيّد جدًا | حسب الإعداد | نعم (بإعدادك) | متجر متنامٍ يريد تحكّمًا |
| ووردبريس/WooCommerce مُدار | ممتاز | كافٍ مضبوط | نعم (مسبقًا) | متجر حرج يريد أداءً دون عناء |
إن كان متجرك يعاني بطئًا في الذروة أو أخطاء 503 أو طوابير عمّال PHP، فالترقية إلى بيئة بموارد مخصّصة قد تكون أكبر تحسين سرعة منفرد. الاستضافة المُدارة لـWooCommerce تأتيك بكاش مضبوط واستثناءات جاهزة وRedis وPHP حديث وعمّال كافين من المصنع، فتركّز على البيع لا على ضبط الخوادم.
ووردبريس أسرع وأكثر أمانًا بلا إعدادات
ووردبريس المُدار من wpressly: سرعة وكاش وحماية وتحديثات تلقائية مع دعم عربي — ركّز على محتواك لا على السيرفر.
جرّب ووردبريس المُداركيف تطبّق الكاش الصحيح لـWooCommerce؟ (القاعدة الذهبية: استثنِ المعاملات)
الكاش ثاني أعظم مكسب بعد الاستضافة، لكنّه في المتاجر سلاح ذو حدّين: إن كاشت الصفحات الخاطئة، عرضت لزائر سلّة زائر آخر أو سعرًا قديمًا أو صفحة دفع مجمّدة. القاعدة الحاسمة: استثنِ صفحات المعاملات من كاش الصفحة دائمًا.
طبقات الكاش في متجر WooCommerce
| نوع الكاش | يخزّن | في المتجر | الاستثناء المطلوب |
|---|---|---|---|
| كاش الصفحة (Page) | HTML الجاهز كاملًا | الرئيسية، المتجر، صفحات المنتجات، المدوّنة | استثنِ السلة/الدفع/حسابي |
| كاش الكائنات (Object/Redis) | نتائج استعلامات قاعدة البيانات | يسرّع كل الصفحات الديناميكية والإدارة | لا استثناء — مفيد دائمًا للمتاجر |
| كاش Opcode (OPcache) | كود PHP المُترجَم | يلغي إعادة ترجمة PHP في كل طلب | إعداد خادم — لا يخصّ المحتوى |
| كاش المتصفّح (Browser) | الأصول الثابتة لدى الزائر | صور، CSS، JS، خطوط | ترويسات Cache-Control |
ما الصفحات التي يجب استثناؤها من كاش الصفحة؟
| الصفحة | لماذا لا تُكاش | ماذا يحدث إن كُوشت بالخطأ |
|---|---|---|
السلة (/cart/) | محتوى يخصّ سلّة كل زائر | يرى الزائر سلّة شخص آخر أو سلّة فارغة قديمة |
الدفع (/checkout/) | بيانات الطلب والدفع الحسّاسة | تجميد الصفحة أو تسريب بيانات أو فشل الدفع |
حسابي (/my-account/) | لوحة العميل وطلباته | عرض حساب مستخدم لآخر |
| صفحة شكر/تأكيد الطلب | تفاصيل الطلب الفريدة | عرض تفاصيل طلب خاطئ |
| نتائج البحث الديناميكية | تختلف لكل استعلام | نتائج غير مرتبطة |
أغلب إضافات الكاش الكبرى تستثني هذه الصفحات تلقائيًا عند اكتشاف WooCommerce (WP Rocket وLiteSpeed Cache يفعلان ذلك). لكن تحقّق دائمًا، خصوصًا إن غيّرت روابط هذه الصفحات الافتراضية. هذا مثال لاستثناءات نصّية يدوية إن احتجتها:
# مسارات يجب عدم كاشها في WooCommerce
/cart/
/checkout/
/my-account/
# الكوكيز التي تمنع الكاش حين توجد (سلّة فعّالة / جلسة)
woocommerce_items_in_cart
woocommerce_cart_hash
wp_woocommerce_session_
عند وجود أيٍّ من كوكيز WooCommerce (سلّة فعّالة أو جلسة)، يجب على إضافة الكاش تجاوز الكاش وتقديم نسخة حيّة لذلك الزائر تحديدًا، بينما يبقى الزوّار الجدد بلا سلّة يُخدَمون من النسخة المكاشة.
كاش الكائنات (Redis) — الأهمّ للمتاجر
كاش الصفحة لا يفيد الصفحات الديناميكية، وهي كثيرة في المتجر. هنا يتألّق كاش الكائنات عبر Redis: يخزّن نتائج الاستعلامات الثقيلة في الذاكرة، فبدل قراءة الأسعار والمخزون والخيارات من القرص في كل طلب، تُجلب من الذاكرة فورًا. أثره على لوحة الإدارة وصفحات السلة والدفع كبير جدًا، وقد يخفّض زمن الاستجابة من ثوانٍ إلى أجزاء من الثانية.
لتفعيل Redis: ثبّت خادم Redis على استضافتك (أو فعّله من اللوحة في الاستضافة المُدارة)، ثم ثبّت إضافة مثل Redis Object Cache واربطها. هذه إعدادات wp-config.php النموذجية:
// تفعيل كاش الكائنات عبر Redis في wp-config.php
define( 'WP_REDIS_HOST', '127.0.0.1' );
define( 'WP_REDIS_PORT', 6379 );
define( 'WP_REDIS_DATABASE', 0 );
// بادئة فريدة تمنع تعارض الكاش بين أكثر من موقع على نفس خادم Redis
define( 'WP_CACHE_KEY_SALT', 'mystore_' );
// مهلة قصيرة حتى لا يعلّق الموقع إن تعطّل Redis
define( 'WP_REDIS_TIMEOUT', 1 );
define( 'WP_REDIS_READ_TIMEOUT', 1 );
بعد الحفظ، فعّل كاش الكائنات من صفحة إضافة Redis Object Cache واضغط Enable Object Cache. تحقّق أنّ الحالة Connected وأنّ نسبة الإصابة (hit rate) ترتفع مع الاستخدام.
كاش الشظايا (Fragment Caching)
WooCommerce يستخدم تقنية «شظايا» لتحديث أجزاء صغيرة من الصفحة (مثل عدّاد السلة) دون إعادة تحميلها بالكامل. بعض إضافات الكاش المتقدّمة تتيح كاش الشظايا للأجزاء الديناميكية الصغيرة داخل صفحة مكاشة، فتجمع بين سرعة كاش الصفحة وحيوية العناصر التي تتغيّر. تحقّق من دعم إضافتك لهذا، لكنه ثانوي مقارنة بضبط استثناءات المعاملات وتفعيل Redis.
ما هي شظايا السلة (Cart Fragments) ولماذا قد تعطّلها؟
«شظايا السلة» (WooCommerce Cart Fragments) ميزة تطلق طلب AJAX إلى admin-ajax.php في كل صفحة لتحديث عدّاد السلّة وإجماليها لحظيًا دون إعادة تحميل. مفيدة، لكنها تضيف طلبًا إضافيًا ثقيلًا — أحيانًا 100–500 مللي ثانية أو أكثر — حتى على الصفحات التي لا تحتوي سلّة أصلًا كالرئيسية ومقالات المدوّنة. على الاستضافة المحدودة قد تكون من أكبر أسباب البطء غير المرئي.
متى وكيف تتعامل معها؟
| الحالة | الإجراء المقترح |
|---|---|
| الصفحة الرئيسية والمدوّنة وصفحات لا سلّة فيها | عطّل cart fragments عليها |
| صفحات المتجر والمنتجات | أبقِها أو حسّنها (تحميل عند الحاجة) |
| تريد عدّاد سلّة حيًّا دائمًا | لا تعطّلها كليًّا — قصّر نطاقها بإضافة أداء |
| متجر بسيط لا يعرض عدّاد سلّة عائم | يمكن تعطيلها كليًّا بأمان |
كثير من إضافات الأداء (مثل Perfmatters أو Disable Cart Fragments) تتيح تعطيل cart fragments على صفحات محدّدة أو كليًّا بنقرة. بديل برمجي بسيط لتعطيلها على الصفحات غير المتعلّقة بالمتجر (يُوضع في إضافة وظائف مخصّصة، لا في ملفّ القالب مباشرة):
// تعطيل cart fragments على الصفحات غير المتعلّقة بالمتجر
add_action( 'wp_enqueue_scripts', function () {
if ( ! is_cart() && ! is_checkout() && ! is_account_page() ) {
wp_dequeue_script( 'wc-cart-fragments' );
}
}, 11 );
اختبر بعد التعطيل أنّ إضافة المنتجات للسلّة وعدّاد السلّة يعملان كما تتوقّع على الصفحات التي تركتها مفعّلة.
كيف تحسّن قاعدة بيانات WooCommerce؟ (الجلسات، الطلبات، HPOS)
قاعدة بيانات المتجر تتضخّم أسرع من مدوّنة: جلسات الزوّار، السلال المهجورة، الطلبات وبياناتها الوصفية، الـtransients، والمراجعات. هذا التراكم يبطئ الاستعلامات وTTFB تدريجيًا.
مشكلة autoload في wp_options
كل صفحة في ووردبريس تحمّل تلقائيًا كل صفّ في wp_options معلَّم بـ autoload = yes. بعض إضافات المتجر تترك ميغابايتات من البيانات هناك تُحمَّل في كل طلب، فترفع TTFB دون أن تدري. افحص الحجم بـ Query Monitor أو استعلام مباشر، ونظّف الصفوف الضخمة عديمة الفائدة:
-- أكبر 20 صفًّا تُحمَّل تلقائيًا في كل صفحة
SELECT option_name, LENGTH(option_value) AS size
FROM wp_options
WHERE autoload = 'yes'
ORDER BY size DESC
LIMIT 20;
-- إجمالي حجم autoload (يفضَّل أن يبقى تحت ~1 ميغابايت)
SELECT ROUND(SUM(LENGTH(option_value)) / 1024 / 1024, 2) AS autoload_mb
FROM wp_options
WHERE autoload = 'yes';
تنظيف الجلسات والـtransients المتراكمة
WooCommerce ينشئ جلسة لكل زائر يلمس السلّة، وتتراكم هذه الجلسات والـtransients المنتهية. أدوات مثل WP-Optimize تنظّفها بأمان، أو يمكنك تشغيل أمر WP-CLI الرسمي لتنظيف الجلسات المنتهية:
# تنظيف جلسات WooCommerce المنتهية عبر WP-CLI
wp wc tool run clear_expired_sessions --user=admin
# حذف الـtransients المنتهية الصلاحية
wp transient delete --expired
جدول التنظيف الدوري لقاعدة المتجر
| العنصر | يتراكم لأنّ | أداة التنظيف | التكرار |
|---|---|---|---|
| جلسات WooCommerce المنتهية | جلسة لكل زائر يلمس السلّة | WP-CLI / WP-Optimize | أسبوعي |
| الـtransients المنتهية | كاش مؤقّت لا يُنظَّف دائمًا | WP-CLI / WP-Optimize | أسبوعي |
| مراجعات المنتجات/المقالات | حفظ كل تعديل | WP-Optimize + WP_POST_REVISIONS | شهري |
| السلال المهجورة القديمة | بيانات سلال لم تكتمل | إضافة استرداد سلال / تنظيف يدوي | شهري |
| autoload متضخّم | إضافات تكتب لـ wp_options | فحص + تنظيف يدوي | عند ملاحظة بطء |
| تحسين الجداول (OPTIMIZE) | تجزئة بعد الحذف | WP-Optimize | بعد كل تنظيف كبير |
للحدّ من تراكم المراجعات، أضِف إلى wp-config.php:
// احتفظ بآخر 5 مراجعات فقط لكل منتج/مقال
define( 'WP_POST_REVISIONS', 5 );
// نظّف سلّة المهملات تلقائيًا كل 7 أيام
define( 'EMPTY_TRASH_DAYS', 7 );
خذ نسخة احتياطية كاملة قبل أي تنظيف لقاعدة البيانات — عملية حذف خاطئة قد تكسر المتجر، والاستعادة هي شبكة الأمان الوحيدة.
HPOS — تخزين الطلبات عالي الأداء
أهمّ ترقية أداء لقاعدة بيانات المتاجر الحديثة هي HPOS (High-Performance Order Storage)، المعروفة سابقًا بـ Custom Order Tables. تقليديًا كان WooCommerce يخزّن الطلبات في جدولَي wp_posts وwp_postmeta المشتركَين مع المقالات والصفحات، ما يجعل استعلامات الطلبات (بحث، فلترة، تقارير) بطيئة على المتاجر الكبيرة لأنّها تتنافس مع كل محتوى الموقع.
HPOS ينقل الطلبات إلى جداول مخصّصة ومفهرسة للطلبات فقط، فتصبح استعلامات الإدارة وقوائم الطلبات أسرع بوضوح، خصوصًا مع آلاف الطلبات.
| الجانب | التخزين القديم (Posts) | HPOS (جداول مخصّصة) |
|---|---|---|
| مكان الطلبات | wp_posts + wp_postmeta | جداول wc_orders المخصّصة |
| سرعة استعلامات الإدارة | تبطؤ مع نمو المحتوى | أسرع وثابتة |
| الفهرسة | عامّة لكل أنواع المحتوى | مخصّصة للطلبات |
| التوافق | الافتراضي القديم | الافتراضي للمتاجر الجديدة |
| التفعيل | — | WooCommerce ← الإعدادات ← متقدّم ← ميزات |
فعّل HPOS من: WooCommerce ← الإعدادات ← متقدّم ← الميزات (Features) ← High-performance order storage. تأكّد أوّلًا من توافق كل إضافاتك مع HPOS (أغلب الإضافات الحديثة متوافقة)، واعمل على نسخة تجريبية (staging) أولًا، وخذ نسخة احتياطية قبل التحويل.
كيف تحسّن صور وأصول متجر WooCommerce؟
المتاجر مليئة بالصور: صورة المنتج الرئيسية، المعرض، الصور المصغّرة في صفحات الأرشيف. الصور غالبًا أثقل عنصر وأكثرها أثرًا على LCP في صفحات المنتجات.
القواعد الأساسية للصور
- اضغط الصور بإضافة مثل ShortPixel أو Imagify أو Smush. الضغط «بفقد» المعتدل يخفّض الحجم 60–80% بفرق بصري لا يُلاحظ.
- حوّلها إلى AVIF أو WebP — أخفّ بكثير من JPG/PNG بنفس الجودة.
- فعّل التحميل الكسول (Lazy Loading) للصور خارج الشاشة، لكن استثنِ صورة المنتج الرئيسية (عنصر LCP) من التأجيل وإلّا تأخّر ظهورها.
- اضبط أبعاد الصور المصغّرة من WooCommerce ← التخصيص ← Store Notice/Images بحيث لا تولّد أحجامًا أكبر مما تُعرض.
مقارنة صيغ الصور
| الصيغة | الحجم النسبي | الجودة | الدعم | الاستخدام المثالي للمتجر |
|---|---|---|---|---|
| JPG | مرجع (100%) | جيّدة | كامل | احتياطي قديم |
| PNG | كبير جدًا | بلا فقد + شفافية | كامل | شعارات/صور بخلفية شفافة |
| WebP | ~30% أخفّ من JPG | ممتازة | شبه كامل | الخيار الافتراضي الآمن لصور المنتجات |
| AVIF | ~50% أخفّ من JPG | الأفضل | حديث (جيّد) | الأمثل مع احتياطي WebP |
CDN لأصول المتجر
شبكة توصيل المحتوى (CDN) توزّع أصولك الثابتة (صور المنتجات، CSS، JS، خطوط) على خوادم حول العالم، فيصل المحتوى من أقرب نقطة للزائر ويخفّ الحمل عن خادمك. هذا مهمّ بشكل خاص للمتاجر التي تعرض عشرات الصور في صفحة الأرشيف. Cloudflare (طبقة مجانية قويّة) أو Bunny CDN أو QUIC.cloud المتكاملة مع LiteSpeed خيارات جيّدة. أغلب إضافات الكاش لها حقل لرابط الـCDN فتعيد كتابة روابط الأصول تلقائيًا.
انتبه: اكاش عبر CDN الأصول الثابتة فقط (صور/CSS/JS)، لا صفحات HTML الديناميكية للسلّة والدفع. إعداد Cloudflare الافتراضي لا يكاش HTML إلّا إن فعّلت قاعدة صفحات صريحة — وحينها يجب استثناء مسارات المعاملات بنفس قواعد كاش الصفحة.
هل تبطئ كثرة الإضافات والقالب الثقيل متجرك؟
نعم، والمتاجر معرّضة لهذا أكثر لأنّ صاحب المتجر يكدّس إضافات بوابات الدفع والشحن والضرائب والتسويق والتقييمات. المشكلة ليست العدد بل الأثر: إضافة ثقيلة تحمّل سكربتات واستعلامات على كل صفحة تضرّ أكثر من خمس إضافات خفيفة.
إضافات الأداء الموصى بها للمتاجر
| الإضافة | الوظيفة | ملاحظة |
|---|---|---|
| LiteSpeed Cache | كاش صفحة + كائنات (على LiteSpeed) | مجانية، استثناءات WooCommerce جاهزة |
| WP Rocket | كاش صفحة + تأجيل JS + تحسينات | مدفوعة، الأسهل، يكتشف WooCommerce تلقائيًا |
| Redis Object Cache | ربط كاش الكائنات بـRedis | ضروري للمتاجر الديناميكية |
| Perfmatters | تعطيل cart fragments + سكربتات انتقائيًا | تحكّم دقيق بأصول كل صفحة |
| ShortPixel / Imagify | ضغط الصور + AVIF/WebP | أساسي لصور المنتجات |
| WP-Optimize | تنظيف قاعدة البيانات والجلسات | جدولة تنظيف دوري |
| Query Monitor | تشخيص الاستعلامات والإضافات البطيئة | للتطوير فقط — لا تتركه مفعّلًا للزوّار |
كيف تتعامل مع الإضافات والقالب؟
- اختر قالبًا خفيفًا متوافقًا مع WooCommerce مثل Storefront أو Astra أو GeneratePress أو Kadence، بدل القوالب «متعدّدة الأغراض» المتخمة.
- احذف الإضافات غير المستخدمة بدل تعطيلها فقط (لتنظيف بياناتها).
- حمّل أصول الإضافة حيث تُستخدم فقط — عطّل سكربت إضافة التقييمات على صفحات لا تظهر فيها، وسكربت بوّابة دفع على غير صفحة الدفع، بإضافة مثل Perfmatters.
- شخّص الإضافة المستهلِكة بـ Query Monitor، الذي يعرض زمن كل إضافة واستعلاماتها.
Core Web Vitals لمتاجر WooCommerce
محرّكات البحث تقيس تجربة الصفحة عبر ثلاثة مؤشّرات (Core Web Vitals) من بيانات مستخدمين حقيقيين، وهي إشارة ترتيب فعلية:
| المؤشّر | يقيس | الهدف الجيّد | تحديه في المتجر |
|---|---|---|---|
| LCP | زمن ظهور أكبر عنصر مرئي | < 2.5 ثانية | صورة المنتج الرئيسية الثقيلة + TTFB غير المكاش |
| INP | استجابة التفاعل (نقر/كتابة) | < 200 مللي ثانية | جافاسكربت الإضافات + cart fragments + فلاتر |
| CLS | ثبات التخطيط البصري | < 0.1 | صور المنتجات بلا أبعاد + شارات العروض المتأخّرة |
أين تظهر التحديات في صفحات المتجر؟
- صفحة المنتج: LCP غالبًا صورة المنتج — اضغطها، حوّلها AVIF، استثنِها من lazy load، وأضِف
fetchpriority="high". وINP يتأثّر بسكربتات المعرض والمتغيّرات (variations). - صفحة الأرشيف/المتجر: كثير من الصور المصغّرة — فعّل lazy load لِما تحت الطيّة، واضبط الأبعاد لتثبيت CLS.
- السلة والدفع: غير مكاشة، فاللاعب الأكبر هنا هو سرعة الخادم (استضافة + Redis) لا تحسينات الواجهة.
كيف تقيس أداء WooCommerce قبل وبعد؟
لا تخمّن — قِس. والقاعدة الذهبية: غيّر شيئًا واحدًا، قِس أثره، ثم انتقل. قِس صفحات المتجر الثلاث المختلفة الطبيعة معًا: صفحة منتج (مكاشة)، صفحة الأرشيف، وصفحة السلّة/الدفع (غير مكاشة).
| الأداة | تقيس | نوع البيانات | الأفضل لـ |
|---|---|---|---|
| PageSpeed Insights | Core Web Vitals + تشخيص | مخبري + ميداني (CrUX) | تقييم سريع لصفحات المنتج/الأرشيف |
| Search Console (تقرير CWV) | أداء زوّارك الفعليين | ميداني حقيقي | متابعة الأثر طويل المدى |
| GTmetrix | شلال التحميل + درجات | مخبري | تحليل موارد صفحة محدّدة |
| Query Monitor | استعلامات + زمن الإضافات + autoload | داخل ووردبريس | تشخيص بطء الدفع/الإدارة من الداخل |
| لوحة الشبكة (DevTools) | الطلبات والأحجام الحيّة | مخبري | تتبّع طلب cart-fragments أو admin-ajax بطيء |
الفرق المهمّ: PageSpeed وGTmetrix يقيسان من الخارج بينما Query Monitor يقيس من الداخل — يكشف أي إضافة أو استعلام يستهلك الزمن في صفحة الدفع. لتشخيص بطء حقيقي تحتاج الاثنين: الخارجي ليقول «هناك بطء»، والداخلي ليقول «هنا تحديدًا». وللصفحات غير المكاشة (السلّة/الدفع) راقب TTFB تحديدًا — فارتفاعه يشير للخادم وكاش الكائنات لا للواجهة.
ووردبريس أسرع وأكثر أمانًا بلا إعدادات
ووردبريس المُدار من wpressly: سرعة وكاش وحماية وتحديثات تلقائية مع دعم عربي — ركّز على محتواك لا على السيرفر.
جرّب ووردبريس المُداراستكشاف الأخطاء: بطء الدفع والإدارة واستهلاك CPU
| المشكلة | السبب المحتمل | الحلّ |
|---|---|---|
| صفحة الدفع بطيئة جدًا | غير مكاشة + استضافة ضعيفة/Redis معطّل + بوّابة دفع بطيئة | فعّل Redis، رقِّ عمّال PHP، شخّص البوّابة بـ Query Monitor |
| لوحة الإدارة (wp-admin) بطيئة | تخزين طلبات قديم (لا HPOS) + Heartbeat كثيف + Redis معطّل | فعّل HPOS، اضبط Heartbeat، فعّل Redis Object Cache |
| استهلاك CPU مرتفع | cart fragments على كل صفحة + إضافة ثقيلة + زحف بوتات | عطّل cart fragments حيث لا تلزم، اعزل الإضافة، احجب البوتات |
admin-ajax.php بطيء/متكرّر | cart fragments + Heartbeat + إضافة تنادي AJAX كثيرًا | قلّل cart fragments وHeartbeat، شخّص نداءات AJAX |
| السلّة لا تتحدّث / تظهر فارغة | كاش الصفحة يكاش السلّة بالخطأ | استثنِ /cart/ و/checkout/ وكوكيز WooCommerce من الكاش |
| TTFB مرتفع على كل الصفحات | استضافة بطيئة + PHP قديم + autoload ضخم + لا OPcache | رقِّ الاستضافة وPHP، نظّف autoload، فعّل OPcache |
| استعلامات إدارة الطلبات بطيئة | الطلبات في wp_posts بلا HPOS | فعّل HPOS بعد اختبار التوافق |
| CLS مرتفع في صفحات المنتجات | صور بلا أبعاد + شارات عروض متأخّرة | أضِف width/height، احجز مساحة الشارات |
منهجية عزل سبب بطء الدفع
صفحة الدفع لا تُكاش، فبطؤها غالبًا من الخادم أو بوّابة دفع. الطريقة الموثوقة: افتح Query Monitor على صفحة الدفع في بيئة تجريبية، وانظر ترتيب الإضافات بزمن التنفيذ واستعلامات قاعدة البيانات. إن ظهرت بوّابة دفع تستغرق وقتًا في نداء خارجي، فالحلّ قد يكون ضبط مهلتها أو بديلها. إن كان TTFB نفسه مرتفعًا قبل أي إضافة، فالمشكلة في الخادم/Redis. اعمل دائمًا على نسخة تجريبية (staging) لا على المتجر الحيّ.
خطّة عملية لتسريع متجرك اليوم
- قِس خطّ الأساس على صفحة منتج وصفحة أرشيف وصفحة سلّة، وسجّل LCP وINP وCLS وTTFB.
- رقِّ PHP إلى 8.2 فأعلى بعد اختبار التوافق على staging — مكسب مجاني فوري.
- فعّل إضافة كاش واحدة (LiteSpeed Cache على LiteSpeed، وإلّا WP Rocket) وتحقّق من استثناء السلة/الدفع/حسابي.
- فعّل كاش الكائنات Redis واربطه بإضافة Redis Object Cache — الأثر الأكبر على الصفحات الديناميكية.
- فعّل HPOS لتسريع إدارة الطلبات بعد التأكّد من توافق الإضافات.
- عطّل cart fragments على الصفحات التي لا تحتاجها (الرئيسية/المدوّنة).
- حسّن الصور بضغط وتحويل AVIF/WebP، وابدأ بصورة المنتج الرئيسية واستثنِها من lazy load.
- نظّف قاعدة البيانات (بعد نسخة احتياطية): الجلسات المنتهية، الـtransients، المراجعات، وافحص autoload.
- اربط CDN للأصول الثابتة فقط، وتأكّد من استثناء صفحات المعاملات.
- أعِد القياس وقارن بخطّ الأساس، وتابع الأثر الحقيقي من تقرير Core Web Vitals في Search Console.
القاعدة عبر كل خطوة: غيّر واحدة، قِس، ثبّت أو تراجع، ثم انتقل — هكذا تبني تحسينًا مفهوم الأسباب لا تكديس إعدادات عمياء.
أخطاء شائعة تبطئ متاجر WooCommerce
- توقّع أن كاش الصفحة يكفي — نسيان أنّ السلّة والدفع لا تُكاش وتعتمد على قوّة الخادم وRedis.
- كاش صفحات المعاملات بالخطأ فتظهر سلّة زائر لآخر أو صفحة دفع مجمّدة.
- إهمال كاش الكائنات Redis رغم أنّه الأهمّ للصفحات الديناميكية وإدارة المتجر.
- ترك cart fragments تعمل على كل صفحة فترفع استهلاك CPU وزمن التحميل.
- تجاهل تفعيل HPOS فتبقى إدارة الطلبات بطيئة مع نمو المتجر.
- تكديس إضافات بوابات دفع وشحن وتسويق ثقيلة دون قياس أثرها.
- رفع صور منتجات ضخمة دون ضغط أو تحويل لصيغة حديثة.
- إهمال تنظيف الجلسات والـtransients المتراكمة وautoload المتضخّم.
- اختيار استضافة مشتركة بعمّال PHP قليلين لمتجر يتوقّع زحامًا في الذروة.
- تغيير أشياء كثيرة دفعة واحدة دون قياس قبل/بعد، فلا تعرف ما الذي نفع.
الخلاصة
تسريع WooCommerce معادلة مرتّبة تراعي طبيعة المتجر الديناميكية: استضافة بعمّال PHP كافين + كاش صفحة يستثني السلة/الدفع/حسابي + كاش كائنات Redis + HPOS لتخزين الطلبات + صور محسّنة وCDN للأصول + تعطيل cart fragments حيث لا تلزم + تنظيف الجلسات وقاعدة البيانات. عالِج الأثقل أثرًا أولًا، واستثنِ صفحات المعاملات من الكاش دائمًا، وقِس صفحات المتجر المختلفة الطبيعة بأداة خارجية وأخرى داخلية، وغيّر شيئًا واحدًا في كل مرّة. النتيجة: صفحات منتجات أسرع، دفع سلس، إدارة خفيفة، Core Web Vitals أفضل، ومبيعات أعلى. وإن أردت بيئة WooCommerce مضبوطة للأداء من الأساس — بكاش واستثناءات وRedis وHPOS وPHP حديث جاهزة دون عناء — فالاستضافة المُدارة تختصر عليك أغلب هذه الخطوات.
ووردبريس أسرع وأكثر أمانًا بلا إعدادات
ووردبريس المُدار من wpressly: سرعة وكاش وحماية وتحديثات تلقائية مع دعم عربي — ركّز على محتواك لا على السيرفر.
جرّب ووردبريس المُدارالأسئلة الشائعة
لماذا متجر WooCommerce أبطأ من مدوّنة ووردبريس عادية؟ لأنّ كثيرًا من صفحاته مخصّص لكل زائر ولا يُكاش (السلة، الدفع، حسابي)، وينشئ جلسة لكل متسوّق، ويطلق شظايا سلّة عبر AJAX في كل صفحة، وتستعلم منتجاته عن أسعار ومخزون وضرائب متغيّرة. كل ذلك يضع عبئًا أكبر على الخادم من مدوّنة تخدم محتوى ثابتًا قابلًا للكاش بالكامل.
ما الصفحات التي يجب استثناؤها من الكاش في WooCommerce؟
صفحات المعاملات والمحتوى المخصّص: السلّة (/cart/)، الدفع (/checkout/)، حسابي (/my-account/)، وصفحة تأكيد الطلب، إضافة لنتائج البحث الديناميكية. كاشها بالخطأ يعرض سلّة زائر لآخر أو يجمّد صفحة الدفع. أغلب إضافات الكاش تستثنيها تلقائيًا عند اكتشاف WooCommerce، لكن تحقّق دائمًا.
هل أحتاج كاش الكائنات Redis لمتجري؟ نعم، إن كان متجرك يتجاوز عددًا صغيرًا من المنتجات والزيارات. كاش الكائنات عبر Redis يخزّن نتائج الاستعلامات في الذاكرة فيسرّع الصفحات الديناميكية ولوحة الإدارة وصفحات السلّة والدفع بشكل ملحوظ — وهذه الصفحات بالذات لا يفيدها كاش الصفحة. كثير من الاستضافات المُدارة تفعّله افتراضيًا.
ما هو HPOS ومتى أفعّله؟
HPOS (High-Performance Order Storage) ينقل طلبات WooCommerce من جدولَي wp_posts/wp_postmeta المشتركَين إلى جداول مخصّصة ومفهرسة للطلبات، فتصبح إدارة الطلبات والتقارير أسرع، خصوصًا مع آلاف الطلبات. فعّله من WooCommerce ← الإعدادات ← متقدّم ← الميزات، بعد التأكّد من توافق إضافاتك واختباره على نسخة تجريبية مع نسخة احتياطية.
ما هي شظايا السلة (cart fragments) وهل أعطّلها؟
ميزة تطلق طلب AJAX إلى admin-ajax.php في كل صفحة لتحديث عدّاد السلّة لحظيًا. مفيدة لكنها تضيف حملًا حتى على صفحات بلا سلّة. عطّلها على الصفحات التي لا تحتاجها (الرئيسية والمدوّنة) للحفاظ على عدّاد السلّة في صفحات المتجر، أو عطّلها كليًّا إن لم يكن لديك عدّاد سلّة عائم.
ما أكبر عامل في سرعة متجر WooCommerce؟ الاستضافة المناسبة بعمّال PHP كافين، لأنّ نسبة كبيرة من طلبات المتجر لا تُكاش (كل تسوّق فعلي يمرّ بالسلّة والدفع). لا تستطيع أي إضافة كاش تعويض استضافة عاجزة عن خدمة الصفحات الديناميكية بسرعة، خصوصًا في الذروة. ابدأ باستضافة قويّة ثم أضِف الكاش وRedis فوقها.
لماذا صفحة الدفع بطيئة بينما باقي المتجر سريع؟ لأنّ صفحة الدفع لا تُكاش وتُبنى من الصفر لكل زائر، وقد تنادي بوّابة دفع خارجية. أسبابها الشائعة: استضافة بطيئة، كاش كائنات معطّل، أو بوّابة دفع بطيئة الاستجابة. شخّصها بـ Query Monitor على نسخة تجريبية: إن كان TTFB مرتفعًا فالمشكلة في الخادم/Redis، وإن ظهرت بوّابة تستغرق وقتًا فالحلّ في ضبطها.
كيف أحسّن صور المنتجات دون فقدان الجودة؟ اضغطها بإضافة مثل ShortPixel أو Imagify، حوّلها إلى AVIF/WebP (أخفّ 30–50% بنفس الجودة)، فعّل التحميل الكسول لكن استثنِ صورة المنتج الرئيسية (عنصر LCP)، واضبط أبعاد الصور المصغّرة من إعدادات WooCommerce حتى لا تولّد أحجامًا أكبر مما تُعرض.
هل يبطئ كثرة الإضافات متجري؟ ما يبطئ هو أثر الإضافة لا عددها. إضافات بوابات الدفع والشحن والضرائب والتسويق قد تحمّل سكربتات واستعلامات على كل صفحة. اختر إضافات خفيفة، احذف غير المستخدم، حمّل أصول كل إضافة حيث تُستخدم فقط بأداة مثل Perfmatters، وشخّص المستهلِكة بـ Query Monitor.
هل يمكن استخدام CDN مع WooCommerce بأمان؟ نعم، لكن اكاش عبر CDN الأصول الثابتة فقط (صور المنتجات، CSS، JS، خطوط) لتسريع تحميلها وتخفيف الحمل عن خادمك. لا تكاش صفحات HTML الديناميكية للسلّة والدفع عبر CDN؛ وإن فعّلت كاش HTML على الحافّة (مثل Cloudflare)، فاستثنِ مسارات المعاملات بنفس قواعد كاش الصفحة.
كيف أنظّف قاعدة بيانات متجري بأمان؟
خذ نسخة احتياطية كاملة أولًا، ثم استخدم أداة موثوقة مثل WP-Optimize أو أوامر WP-CLI لتنظيف جلسات WooCommerce المنتهية، والـtransients، والمراجعات الزائدة، والتعليقات المزعجة، وافحص حجم autoload في wp_options. تجنّب الحذف اليدوي المباشر من الجداول إلّا إن كنت تعرف بالضبط ما تفعل، واعمل على staging عند الشكّ.