تسريع موقع ووردبريس على Nginx باستخدام FastCGI Cache

يُعتبر تحسين أداء المواقع الإلكترونية أمراً بالغ الأهمية في عالم الويب هذه الآونة. مع ازدياد عدد الزوار والمحتوى؛ يصبح تحميل الصفحات السريع أمراً ضرورياً لتوفير تجربة مستخدم مميزة وزيادة ترتيب موقعك في نتائج محركات البحث. إذا كنت تستخدم Nginx كخادم ويب، فإن تفعيل التخزين المؤقت (Caching) يمكن أن يكون من أفضل الطرق لتحسين أداء موقعك بشكل ملحوظ. في هذا المقال، سنناقش كيفية استخدام التخزين المؤقت مع Nginx لتحسين سرعة التحميل وأداء موقعك بشكل عام.

ما هو التخزين المؤقت في Nginx؟

التخزين المؤقت (Caching) هو عملية تخزين نسخ مؤقتة من المحتوى الذي يتم طلبه بشكل متكرر، مثل الصفحات الثابتة، الصور، واستجابات قواعد البيانات. بدلاً من إعادة إنشاء أو طلب المحتوى في كل مرة يزور فيها المستخدم موقعك، يتم استخدام النسخة المخزنة من هذا المحتوى، مما يقلل من الضغط على الخادم ويزيد من سرعة استجابة الموقع.

Nginx يعتبر من أسرع خوادم الويب المتاحة، ويتميز بقدرته على إدارة عدد كبير من الاتصالات المتزامنة. عند تفعيل التخزين المؤقت، يصبح بإمكانه تقديم استجابات أسرع بكثير عن طريق تقليل زمن الوصول إلى البيانات المتكررة.

redis-wp-plugin

استخدام Redis لتسريع مواقع ووردبريس

للحصول على موقع أسرع 10 مرات، قم بدمج استخدام Redis مع Nginx FastCGI Cache

تعلّم كيف ↗

لماذا التخزين المؤقت مفيد؟

  1. تقليل زمن تحميل الصفحات (Page Load Time): بدلاً من معالجة الطلبات من البداية في كل مرة، يمكن لـ Nginx تقديم الصفحات المخزنة مباشرة من ذاكرته المؤقتة.
  2. تقليل استهلاك الموارد: التخزين المؤقت يقلل من عدد الاستعلامات على قاعدة البيانات وعمليات معالجة الـ PHP، مما يخفض الحمل على الخادم ويزيد من كفاءته.
  3. تحسين تجربة المستخدم: المواقع الأسرع توفر تجربة أفضل للمستخدمين، مما يزيد من معدلات الاحتفاظ بالمستخدمين وتقليل معدلات الارتداد (Bounce Rate).
  4. تحسين SEO: سرعة الموقع هي أحد العوامل الهامة لترتيب محركات البحث. المواقع التي تتمتع بسرعة تحميل أفضل تحصل عادة على ترتيب أعلى في نتائج البحث.

أنواع التخزين المؤقت في Nginx

هناك عدة أنواع من التخزين المؤقت يمكن تفعيلها على خادم Nginx، وهي:

  1. التخزين المؤقت على مستوى المتصفح (Browser Caching): يقوم المتصفح بتخزين نسخ من الموارد الثابتة مثل الصور والملفات النصية محلياً، مما يسمح له بعرض الصفحات بشكل أسرع عند زيارة المستخدم للموقع مرة أخرى.
  2. التخزين المؤقت على مستوى الخادم (Server-Side Caching): Nginx يمكنه تخزين استجابات HTTP وإعادتها للمستخدمين دون الحاجة إلى إعادة معالجة الطلبات في كل مرة.
  3. التخزين المؤقت لملفات Static: يتضمن تخزين الملفات الثابتة مثل CSS وJavaScript وHTML في الذاكرة المؤقتة.

كيفية تفعيل التخزين المؤقت في Nginx

1. تفعيل التخزين المؤقت للملفات الثابتة (Static Files Caching)

أول خطوة لتحسين أداء موقعك هي تفعيل التخزين المؤقت للملفات الثابتة. الملفات مثل الصور، ملفات CSS، وJavaScript غالباً لا تتغير كثيراً، لذا يمكن تخزينها لفترات طويلة لتقليل عدد الطلبات التي يتعامل معها الخادم.

افتح ملف إعدادات Nginx الرئيسي (عادةً /etc/nginx/nginx.conf) وأضف الإعدادات التالية:

http {
    # إعدادات التخزين المؤقت للملفات الثابتة
    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
        expires 30d;  # تخزين الملفات لمدة 30 يومًا
        add_header Cache-Control "public";
    }
}Code language: PHP (php)
  • expires 30d: هذا التوجيه يخبر المتصفح بتخزين الملفات لمدة 30 يومًا.
  • Cache-Control: هذا الهيدر يحدد أن الملفات يمكن أن تخزن في ذاكرة التخزين المؤقت.

2. تفعيل التخزين المؤقت لاستجابات PHP

بما أنك تستخدم PHP لتوليد صفحاتك، فإن تخزين استجابات PHP يمكن أن يقلل من وقت المعالجة بشكل كبير. لتفعيل هذا النوع من التخزين المؤقت، يمكنك استخدام FastCGI Caching.

في ملف nginx الخاص بموقعك، وقبل بداية server ، سنضيف سطر fastcgi_cache_path ، ثم سنقوم بإضافة الأسطر الخاصة بالكاش داخل location ~ \.php$ كما هو موضح في المثال التالي:

    # إعدادات FastCGI Cache
    fastcgi_cache_path /var/cache/nginx/multaqaweb.com levels=1:2 keys_zone=multaqaweb.com:100m inactive=60m;

    server {
    
        # الأكواد الحالية


        location ~ \.php$ {
            # الأكواد الحالية
            fastcgi_cache multaqaweb.com;
            fastcgi_cache_bypass $skip_cache;
            fastcgi_no_cache $skip_cache;
            fastcgi_cache_valid 200 60m;
            fastcgi_cache_valid 404 1m;
            fastcgi_cache_use_stale error timeout invalid_header updating;
        }


         # الأكواد الحالية
    }
Code language: PHP (php)

ثم أضف الإعدادات التالية إلى ملف nginx.conf:

fastcgi_cache_key "$scheme$request_method$http_host$request_uri";
add_header Fastcgi-Cache $upstream_cache_status;Code language: PHP (php)
  • fastcgi_cache_path: يحدد موقع تخزين الملفات المؤقتة.
  • fastcgi_cache_key: يحدد مفتاح التخزين المؤقت بناءً على عنوان URL.
  • fastcgi_cache_valid: يحدد مدة صلاحية الكاش المخزن (في هذا المثال 60 دقيقة للصفحات السليمة و1 دقيقة للصفحات غير الموجودة).
  • fastcgi_cache_use_stale: يسمح بإرجاع النسخة القديمة من المحتوى في حالة حدوث خطأ أثناء إعادة توليد الصفحة الحالية.

من الضروري تعطيل الكاش في الصفحات التي يجب ألا تقوم بإرجاع نسخ قديمة أو محفوظة للمستخدمين، قم بوضع كود الاستثناءات قبل أول location داخل ملف إعدادات nginx الخاص بموقعك:

set $skip_cache 0;

# إذا كانت الطريقة هي POST، قم بتعيين $skip_cache إلى 1
if ($request_method = POST) {
    set $skip_cache 1;
}

# إذا كان هناك سلسلة استعلام في الرابط، قم بتعيين $skip_cache إلى 1
if ($query_string != "") {
    set $skip_cache 1;
}

# لا تستخدم الكاش للروابط التالية
if ($request_uri ~* "/wp-admin/|/wp-json/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {
    set $skip_cache 1;
}

# لا تستخدم الكاش للمستخدمين المسجلين أو الذين علقوا مؤخرًا
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
    set $skip_cache 1;
}
Code language: PHP (php)

3. التخزين المؤقت على مستوى المتصفح

يمكنك التحكم في التخزين المؤقت على مستوى المتصفح عن طريق إضافة توجيهات في ملف إعدادات Nginx. يُفضل تخزين الملفات الثابتة لفترات أطول، بينما يتم تحديث الصفحات الديناميكية بشكل متكرر.

location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 365d;  # تخزين الملفات لمدة عام
    add_header Cache-Control "public";
}

location / {
    expires 1h;  # تخزين الصفحات لمدة ساعة
    add_header Cache-Control "private, no-store";
}Code language: PHP (php)

4. تطهير الذاكرة المؤقتة (Cache Purging)

يتم إخلاء الذاكرة المؤقتة تلقائيًا عند تعديل أو إضافة محتوى جديد في موقعك على ووردبريس عن طريق إضافة Nginx Cache ، قم بتثبيت الإضافة ثم توجّه إلى الأدوات > Nginx Cache ، ثم أضف مسار التخزين المؤقت الذي قم بتعريفه مسبقًا، في هذه الحالية سيكون الرابط كالتالي:

/var/cache/nginx/multaqaweb.comCode language: JavaScript (javascript)

يجب تحديد خيار Automatically flush the cache when content changes للسماح بحذف الكاش بشكل تلقائي عند تحديث المحتوى.

أيضًا في بعض الأحيان يمكنك استخدام Nginx Cache Purge لتطهير ملفات التخزين المؤقتة يدويًا أو تلقائيًا.

لتمكين هذه الميزة، تحتاج إلى إعداد رابط خاص لتطهير ملفات الكاش:

location ~ /purge(/.*) {
    allow 127.0.0.1;  # السماح بالوصول فقط من خلال localhost
    deny all;
    fastcgi_cache_purge WORDPRESS "$scheme$request_method$host$1";
}Code language: PHP (php)

بعد الانتهاء من كافة الخطوات، يجب إعادة تشغيل سيرفر Nginx عن طريق الأمر التالي:

sudo service nginx restart

فوائد التخزين المؤقت في Nginx

  1. تخفيف الحمل على الخادم: تقليل عدد الطلبات التي يتم توجيهها إلى الخادم وقاعدة البيانات، مما يقلل من استهلاك الموارد.
  2. تسريع موقع ووردبريس: المحتوى المخزن يتم تقديمه بسرعة أكبر مقارنةً بتوليد المحتوى من الصفر في كل مرة.
  3. تحسين تجربة المستخدم: المواقع الأسرع تعزز من رضا الزوار وتزيد من احتمالية العودة مرة أخرى.
  4. تحسين ترتيب الموقع في محركات البحث: سرعة الموقع تلعب دورًا مهمًا في تصنيفات SEO، والتخزين المؤقت يساعد في تحسين هذه السرعة.

استكشاف الأخطاء وإصلاحها

  1. التحقق من صحة التخزين المؤقت:
    يمكنك التحقق من صحة إعدادات التخزين المؤقت من خلال طلب محتوى الموقع باستخدام أداة مثل cURL:
   curl -I https://yourdomain.comCode language: JavaScript (javascript)
  1. ضبط إعدادات التخزين المؤقت:
    قد تحتاج إلى تعديل إعدادات التخزين المؤقت بناءً على نوع المحتوى الذي تقدمه وحجم الزيارات. حاول تجريب أوقات صلاحية مختلفة وتأكد من أن المحتوى الديناميكي يتم تحديثه بشكل صحيح.

خاتمة

استخدام التخزين المؤقت مع Nginx هو إحدى أفضل الطرق لتحسين أداء موقعك الإلكتروني. من خلال تفعيل التخزين المؤقت على مستوى الملفات الثابتة واستجابات PHP، يمكنك تقليل زمن تحميل الصفحات، تخفيف الحمل على الخادم، وتحسين تجربة المستخدم بشكل كبير. نأمل أن يكون هذا الدليل قد قدم لك فهمًا شاملًا لكيفية تطبيق التخزين المؤقت في Nginx لتحسين أداء موقعك.

يمكننا حجز وإدارة السيرفر الخاص بك عن طريق ملتقى الويب

تحسين وإدارة السيرفرات

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

Scroll to Top