يتباطأ ووكومرس لأسباب يمكن التنبؤ بها: كل صفحة لا يمكن تخزينها مؤقتاً (السلة، إتمام الشراء، حسابي، إضافة المنتج عبر AJAX) تشغّل PHP بالكامل وتستعلم قاعدة البيانات، ولوحة الإدارة تحمّل عشرات استعلامات الإضافات، وصور المنتجات غالباً ما تُرسَل بدقتها الكاملة. يشرح هذا الدليل التغييرات الأكثر تأثيراً — مرتبة تقريباً حسب الأثر — مع أوامر يمكنك لصقها على خادم لينكس (Nginx + PHP-FPM + MariaDB). والمبادئ نفسها تنطبق على الاستضافة المُدارة؛ تفعّل فيها الإعدادات المكافئة من لوحة التحكم.
1. ابدأ بحزمة الاستضافة الصحيحة
لا يمكن للمتجر أن يتفوق على خادم بطيء. قبل ضبط البرمجيات، تأكد من سلامة الأساس:
- PHP 8.1 أو أحدث مع تفعيل OPcache — فإصدارات PHP الحديثة أسرع بكثير من 7.x.
- MariaDB 10.6 أو أحدث / MySQL 8 على تخزين NVMe محلي، لا قاعدة بيانات مشتركة مُقيّدة.
- على الأقل 2 vCPU و4 جيجابايت رام لكتالوج حقيقي؛ فإتمام الشراء يستهلك المعالج بشدة وقت الذروة.
- HTTP/2 أو HTTP/3 ونسخة حديثة من OpenSSL لتشفير TLS سريع.
إذا كان متجرك يخدم عملاء السعودية والخليج، فالاستضافة داخل المملكة تقلّل زمن الذهاب والإياب وتبقي إقامة البيانات متوافقة مع متطلبات نظام حماية البيانات الشخصية (PDPL) والهيئة الوطنية للأمن السيبراني (NCA). تعمل سكايلاين كلاود على بنية تحتية داخل المملكة مبنية لهذا الغرض تحديداً — راجع الاستضافة السحابية وأدلة استضافة المتاجر الإلكترونية.
تأكد من إصداراتك:
php -v
mariadb --version
php -i | grep -i opcache.enable
2. أضف تخزين الكائنات المؤقت عبر Redis (أكبر مكسب منفرد)
يكرر ووكومرس نفس الاستعلامات المكلفة لقاعدة البيانات مراراً. ويخزّن كاش الكائنات الدائم نتائجها في الذاكرة، فتصبح الصفحات غير المُخزّنة (السلة، إتمام الشراء، لوحة التحكم) أسرع بكثير.
ثبّت Redis وامتداد PHP:
sudo apt update
sudo apt install -y redis-server php-redis
sudo systemctl enable --now redis-server
ثم ثبّت إضافة Redis Object Cache في ووردبريس، وأضف ما يلي إلى wp-config.php فوق سطر "stop editing":
define( 'WP_REDIS_HOST', '127.0.0.1' );
define( 'WP_REDIS_PORT', 6379 );
define( 'WP_REDIS_MAXTTL', 86400 );
define( 'WP_CACHE_KEY_SALT', 'mystore_' );
انتقل إلى الإعدادات → Redis واضغط Enable Object Cache. تحقق من الاتصال:
redis-cli info stats | grep keyspace_hits
3. اضبط OPcache وPHP-FPM
يبقي OPcache كود PHP المُترجَم في الذاكرة كي لا يُعاد ترجمته في كل طلب. عدّل إعداد PHP (مثلاً /etc/php/8.2/fpm/conf.d/10-opcache.ini):
opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=20000
opcache.validate_timestamps=1
opcache.revalidate_freq=60
حجم تجمّع PHP-FPM مهم تحت الضغط. قاعدة تقريبية: pm.max_children = الرام المتاحة لـPHP ÷ متوسط حجم العملية. مع نحو 4 جيجابايت متاحة و80 ميجابايت لكل عامل، يكون نحو 40 عاملاً منطقياً. في /etc/php/8.2/fpm/pool.d/www.conf:
pm = dynamic
pm.max_children = 40
pm.start_servers = 8
pm.min_spare_servers = 6
pm.max_spare_servers = 12
pm.max_requests = 500
أعد التحميل: sudo systemctl reload php8.2-fpm.
4. تخزين الصفحات المؤقت لكل ما يمكن تخزينه
معظم زياراتك — الصفحة الرئيسية والمتجر وصفحات الأقسام والمنتجات — متطابقة للزوار غير المسجّلين، ويجب تقديمها كـHTML ثابت. استخدم إضافة تخزين مؤقت (WP Super Cache أو W3 Total Cache أو الكاش المدمج في استضافتك)، واستثنِ دائماً الصفحات الديناميكية:
/cart//checkout//my-account/- أي رابط يحوي المعامل
?add-to-cart=أو ملفات تعريف الارتباطwoocommerce_cart_hash/wp_woocommerce_session_.
تقديم السلة أو إتمام الشراء من الكاش سيُسرّب سلة عميل إلى آخر، لذا تأكد من هذه الاستثناءات قبل الإطلاق.
5. حسّن الصور والملفات
غالباً ما تكون صور المنتجات أثقل جزء في الصفحة.
- قدّم WebP أو AVIF وحمّل الصور أسفل الطية بشكل كسول (ووردبريس يفعل ذلك أصلاً).
- صغّر أبعاد المرفوعات — فصورة بعرض 4000 بكسل تُعرض بعرض 600 تهدر النطاق الترددي.
- حدّد أحجام مصغّرات معقولة من الإعدادات → الوسائط وأعد توليدها بعد التغيير.
- صغّر CSS/JS وادمجها، وأجّل تحميل السكربتات غير الحرجة.
يمكنك تحويل الصور الحالية دفعة واحدة على الخادم:
sudo apt install -y webp
cd wp-content/uploads
find . -type f -iname "*.jpg" -exec cwebp -q 80 {} -o {}.webp \;
6. نظّف قاعدة البيانات وفهرسها
يراكم ووكومرس بيانات مؤقتة منتهية وجلسات مهجورة ومراجعات للمقالات. قلّمها دورياً عبر WP-CLI:
wp transient delete --expired
wp post delete $(wp post list --post_type=revision --format=ids) --force
wp db optimize
مكسبان بنيويان للمتاجر الأكبر:
| التغيير | لماذا يفيد |
|---|---|
| تفعيل تخزين الطلبات عالي الأداء (HPOS) | تنتقل الطلبات إلى جداول مخصصة بدل wp_posts، ما يقلّص تضخّم الاستعلامات |
| نقل جلسات ووكومرس إلى Redis | يمنع تضخّم التحميل التلقائي في wp_options |
فعّل HPOS من WooCommerce → الإعدادات → متقدم → الميزات، ثم نفّذ بضعة طلبات تجريبية للتأكد من توافق الإضافات.
7. قِس، ولا تخمّن
أنشئ خط أساس وأعد الاختبار بعد كل تغيير. استخدم إضافة Query Monitor للعثور على الاستعلامات البطيئة وأسوأ الإضافات، وأداة عامة (WebPageTest أو PageSpeed Insights) لأزمنة التحميل الواقعية. ومن الخادم، قِس زمن مسار إتمام الشراء غير المُخزّن:
curl -o /dev/null -s -w "TTFB: %{time_starttransfer}s\n" https://yourstore.sa/checkout/
تابع زمن أول بايت (TTFB) قبل وبعد. إذا بقي مرتفعاً بعد التخزين المؤقت، فالاختناق عادة يكون تشبّع PHP-FPM، أو إضافة بطيئة، أو نداء واجهة برمجية بعيد عند إتمام الشراء (دفع/شحن) — استخدم Query Monitor للتحديد.
قائمة تحقق سريعة للاستضافة
- PHP 8.1 أو أحدث مع OPcache، وMariaDB 10.6 أو أحدث على NVMe
- تفعيل كاش الكائنات بـRedis والتأكد من عمله
- تشغيل كاش الصفحات مع استثناء السلة وإتمام الشراء والحساب
- HTTP/2 أو HTTP/3 + شهادة SSL صالحة
- تفعيل HPOS وتحسين قاعدة البيانات عبر مهمة مجدولة
- تقديم الصور بصيغة WebP/AVIF وتحميلها كسولاً
يحتاج المتجر السريع أيضاً بريداً معاملاتياً موثوقاً كي تصل تأكيدات الطلبات وإعادة تعيين كلمات المرور إلى صندوق الوارد — راجع استضافة البريد للأعمال.
ابدأ مع سكايلاين كلاود
توفّر سكايلاين كلاود استضافة ووكومرس داخل المملكة بتخزين NVMe، وPHP حديث، وشهادة SSL بنقرة واحدة، ودعم عربي محلي — مضبوطة للحزمة أعلاه. أنشئ حسابك وأطلق متجراً أسرع اليوم.
Comments
0 total · 0 threads