Rocket-Nginx هو تكوين Nginx للمكون الإضافي لذاكرة التخزين المؤقت في WordPress WP Rocket. إنه يمكّن Nginx من خدمة الملفات المخزنة مؤقتًا مسبقًا مباشرة دون استدعاء WordPress أو أي PHP. كما أنه يضيف رؤوسًا إلى ذاكرة التخزين المؤقت CSS وJS والوسائط من أجل الاستفادة من ذاكرة التخزين المؤقت للمتصفح عن طريق تقليل الطلب على خادم الويب الخاص بك.
قد تسأل نفسك: "ما مدى جودة هذا التكوين؟".
دعنا نقول فقط أن WP Rocket نفسها تستخدمه على موقعها الإلكتروني لجعلها أسرع!
هذا المشروع برعاية SatelliteWP، وهي خدمة صيانة WordPress تقع بالقرب من مونتريال، كندا. يتم تقديم خدمتنا باللغتين الإنجليزية والفرنسية. يعمل برنامج SatelliteWP على تحسين مواقع WordPress.
تم إنشاء التكوين بواسطة Maxime Jobin (@maximejobin) ويتم صيانته الآن بواسطة SatelliteWP.
نظرًا لأن هدف التكوين هو تقديم الملفات المخزنة مؤقتًا مباشرةً دون الحاجة إلى تنفيذ أي PHP من WordPress، فقد يتسبب هذا في عدم استدعاء المهام المجدولة. كما تعلم بالفعل، فإن وظائف WP-Cron ليست وظائف cron حقيقية ويتم تنفيذها فقط عندما يكون لديك زيارات لموقعك.
من أجل التأكد من تشغيل المهام المجدولة في الوقت المناسب، يُقترح بشدة تعطيل وظائف cron في WordPress وإنشاء وظيفة cron حقيقية.
لتعطيل وظيفة WordPress cron، أضف السطر التالي إلى wp-config.php
الخاص بك:
define( 'DISABLE_WP_CRON', true );
بعد ذلك، قم بإجراء مهمة cron يدويًا كل 15 دقيقة (يجب أن يكون ذلك كافيًا لمعظم مواقع الويب):
*/15 * * * * wget -q -O - http://www.website.com/wp-cron.php?doing_wp_cron &>/dev/null
أو
*/15 * * * * curl http://www.website.com/wp-cron.php?doing_wp_cron &>/dev/null
أو
*/15 * * * * cd /home/user/public_html; php wp-cron.php &>/dev/null
تأكد من اختبار أن مهامك لا تزال تعمل بعد هذا التغيير!
لاستخدام البرنامج النصي، يجب عليك تضمينه في التكوين الفعلي الخاص بك. إذا لم يتم تكوين موقع WordPress الخاص بك بعد للعمل مع Nginx، فيمكنك التحقق من تكوين Nginx للحصول على وثائق WordPress.
هناك حاجة إلى مثيل واحد فقط من Rocket-Nginx لجميع مواقع WordPress الخاصة بك التي تستخدم WP Rocket. يمكنك إنشاء العديد من ملفات التكوين حسب الحاجة.
يمكنك إنشاء مجلد rocket-nginx
في دليل تكوين Nginx الخاص بك. إذا كنت تستخدم Ubuntu، فيجب العثور على إعدادات Nginx (nginx.conf) في: /etc/nginx/
.
للتثبيت، يمكنك:
cd /etc/nginx
git clone https://github.com/satellitewp/rocket-nginx.git
منذ الإصدار 2.0، يجب إنشاء التكوين. لإنشاء التكوين الافتراضي، يجب عليك إعادة تسمية ملف ini المعطل وتشغيل محلل التكوين:
cd rocket-nginx
cp rocket-nginx.ini.disabled rocket-nginx.ini
php rocket-parser.php
سيؤدي هذا إلى إنشاء التكوين default.conf
الذي يمكن تضمينه لجميع مواقع الويب. إذا كنت بحاجة إلى تغيير التكوين الافتراضي، فيمكنك تحرير ملف ini وإضافة قسم آخر في أسفل الملف.
بعد ذلك، في ملف تكوين Nginx، يجب عليك تضمين التكوين الذي تم إنشاؤه. إذا كانت تكوينات مواقع الويب الخاصة بك موجودة في /etc/nginx/sites-available
، فستحتاج إلى تغيير التكوين الخاص بك:
server {
...
# Rocket-Nginx configuration
include rocket-nginx/conf.d/default.conf;
...
}
قبل إعادة تحميل التكوين الخاص بك، تأكد من اختباره: nginx -t
بمجرد الانتهاء من الاختبار، يجب عليك إعادة تحميل التكوين الخاص بك. service nginx reload
هذا كل شيء.
لا يوجد تكوين للقيام به. وسوف تعمل خارج منطقة الجزاء. ولكن يمكنك تعديل بعض الأشياء ...
ما عليك سوى فتح ملف rocket-nginx.ini
ورؤية جميع الخيارات الموجودة فيه.
يمكنك إضافة قسم جديد بناءً على التكوين الافتراضي مثل هذا:
# This creates the new section and will generate a new configuration
[example.com : default]
# This will add a value to invalidate the cache with a cookie
cookie_invalidate[] = "my_custom_cookie"
بمجرد تحرير ملف ini، يجب عليك إعادة إنشاء ملف تكوين Nginx الخاص بك عن طريق تشغيل المحلل اللغوي:
php rocket-parser.php
بعد ذلك، ستقوم الأقسام المضافة أو المعدلة حديثًا بإنشاء ملف تكوين التحديث (*.conf).
أخيرًا، في كل مرة تقوم فيها بإنشاء (أو إعادة إنشاء) ملفات التكوينات، يتعين عليك القيام بما يلي:
اختبره للتأكد من أنه لم ينتج أي خطأ:
nginx -t
إعادة تحميل التكوين:
service nginx reload
بدءًا من الإصدار 3.0، يتم إنشاء مجلد conf.d
لكل ملف تعريف مختلف تقوم بإنشائه، يتم إنشاء مجلد فرعي داخل هذا المجلد. فيه، يمكنك إنشاء الملفات التي سيتم تضمينها في ملف التكوين الذي تم إنشاؤه.
يمكنك تضمين ملفات التكوين في أوقات مختلفة.
في ملف التعريف الافتراضي، قم بإنشاء ملف في conf.d/default/
له نمط اسم الملف التالي: start.*.conf
.
في ملف التعريف الافتراضي، قم بإنشاء ملف في conf.d/default/
بنمط اسم الملف التالي: global.*.conf
.
في ملف التعريف الافتراضي، قم بإنشاء ملف في conf.d/default/
له نمط اسم الملف التالي: http.*.conf
.
في ملف التعريف الافتراضي، قم بإنشاء ملف في conf.d/default/
بنمط اسم الملف التالي: preprocess.*.conf
.
في ملف التعريف الافتراضي، قم بإنشاء ملف في conf.d/default/
بنمط اسم الملف التالي: css.*.conf
.
في ملف التعريف الافتراضي، قم بإنشاء ملف في conf.d/default/
بنمط اسم الملف التالي: js.*.conf
.
في ملف التعريف الافتراضي، قم بإنشاء ملف في conf.d/default/
بنمط اسم الملف التالي: media.*.conf
.
قد ترغب في التحقق مما إذا كانت ملفاتك يتم تقديمها مباشرةً بواسطة Nginx وعدم استدعاء أي لغة PHP. للقيام بذلك، افتح ملف rocket-nginx.ini
وقم بتغيير قيمة التصحيح من:
debug = false
ل:
debug = true
يوجد الرأس التالي بغض النظر عما إذا تم تعيين التصحيح على صواب أو خطأ:
أسباب عدم عرض ملف مخبأ:
هل Rocket-Nginx مثالي؟ لا، ليس كذلك! لقد حاولنا أن نجعلها مثالية قدر الإمكان، لكن لغة البرمجة النصية لـ Nginx لا تقدم جميع الإمكانيات التي توفرها لغة مثل PHP، على سبيل المثال. ولذلك، هناك بعض القيود.
الرخويات المشفرة
إجابة مختصرة: لا يمكن لـ Rocket-Nginx تقديم سبيكة مرمزة.
نظرًا لقيود البرمجة النصية لـ Nginx، يتم تشفير الارتباطات الثابتة مثل 'جزازة العشب' ويتم تخزين الملف بواسطة WP Rocket كـ '%d8%ac%d8%b2%d8%a7%d8%b2%d8%a9%20%d8%a7 %d9%84%d8%b9%d8%b4%d8%a8' (أحرف صغيرة). سترسل بعض المتصفحات، مثل Google Chrome، الطلب بالشكل '%D8%AC%D8%B2%D8%A7%D8%B2%D8%A9%20%D8%A7%D9%84%D8%B9%D8%. B4%D8%A8' (أحرف كبيرة). باستخدام لغة مثل PHP، سيكون من السهل مقارنة هذه السلاسل على أنها متساوية. مع Nginx، هذا غير ممكن إلا إذا كانت هناك حاجة إلى وحدة طرف ثالث (مثل Perl أو Lua). لجعل Rocket-Nginx عامًا قدر الإمكان، تقرر عدم إضافة تبعية للوحدة النمطية. إذا كنت تريد دعم الارتباطات الثابتة المشفرة وإضافة الكود المفقود، لاحظ أن الإصدار 3.1.0 (والإصدارات الأحدث) يقدم تكوينًا جديدًا يتضمن اسم "المعالجة المسبقة" لتعديل حالة المتغير $rocket_uri_path
(فرض أحرف صغيرة).
التوافق مع ويب
إجابة مختصرة: لن يخدم Rocket-Nginx ملفات التخزين المؤقت لـ WebP التي تم إنشاؤها بواسطة WP Rocket إذا قمت بتنشيط ميزة توافق WebP.
يستطيع WP Rocket إنشاء ذاكرة تخزين مؤقت محددة إذا استخدمت أداة لتحويل صورك (JPG، PNG، ...) إلى WebP. لسوء الحظ، لغة البرمجة النصية لـ Nginx ليست قوية بما يكفي لتحقيق التحقق بشكل صحيح. لذلك، إذا قمت بتنشيط هذه الميزة، فسيسمح Rocket-Nginx لـ WP Rocket بمعالجة الطلب وتقديم الصفحة الصحيحة المخزنة مؤقتًا، اعتمادًا على السياق.
هل Rocket-Nginx متوافق مع BF Cache (ذاكرة التخزين المؤقت للخلف/الأمام)؟
نعم! إذا كان موقع الويب الخاص بك لا يعرض بيانات حساسة وكان مطابقًا جيدًا للتخزين المؤقت للخلف/للأمام، فيجب عليك تعديل تكوين Rocket-Nginx الخاص بك عن طريق متابعة مناقشة BF Cache في المشكلات.
كيف أقوم بالترقية من الإصدار 1 أو 2 إلى الإصدار 3؟
نقترح عليك حفظ التكوين السابق والبدء من جديد. اغتنم هذه الفرصة لمراجعة كل شيء حيث تغيرت أشياء كثيرة. رسميًا، الإصدار 3.x غير متوافق مع الإصدارات السابقة. يجب ألا يستغرق البدء من الصفر أكثر من 15 دقيقة.
ما الجديد في الإصدار 3.x؟
أشياء كثيرة!
هل لديك أي معيار حول المشروع؟
لا، فالناس يحبون المعايير بقدر ما يكرهونها. تحتوي جميع المعايير على أشخاص يزعمون أنه كان من الممكن إجراء X أو Y أو Z لتحسين النتيجة. في هذا المشروع، سيعتمد المعيار على عدد المكونات الإضافية التي لديك والتي تؤثر على الصفحة حتى لو كان الإخراج في ذاكرة التخزين المؤقت (على سبيل المثال، يقوم WP Rocket بتنفيذ PHP حتى عندما يكون الملف في ذاكرة التخزين المؤقت). ما يمكننا قوله هو أنك ستنتقل من NGINX → PHP-FPM → WordPress (PHP وقاعدة البيانات) → ملف ثابت إلى NGINX → ملف ثابت . بمعنى آخر، أنت تقدم الملف الثابت مباشرة من NGINX بدلاً من تمرير الطلب إلى FPM ثم إلى PHP (بالنسبة لـ WP Rocket... على الأقل) قبل تقديم الملف الثابت.
هل سيعمل Rocket-Nginx إذا كان موقع الويب الخاص بي يستخدم شهادة SSL (https)؟
نعم! سيكتشف Rocket-Nginx ما إذا كان الطلب قد تم تقديمه عبر HTTP أو HTTPS وسيقدم الملف الصحيح وفقًا لنوع الطلب. يتم التعامل مع كلا البروتوكولين تلقائيًا منذ الإصدار 1.0.
تم إصداره بموجب ترخيص MIT. راجع ملف الترخيص للحصول على التفاصيل.