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


- طلب المتغيرات: تحتوي هذه المتغيرات على معلومات حول طلب HTTP الوارد، مثل طريقة الطلب وعنوان URL والرؤوس وعنوان IP للعميل. على سبيل المثال،
req.methodيحتفظ بطريقة HTTP (على سبيل المثال، GET، POST) للطلب، بينماreq.urlيحتوي على عنوان URL المطلوب. - متغيرات الاستجابة: توفر متغيرات الاستجابة معلومات حول استجابة HTTP المستلمة من الخادم الأصلي، بما في ذلك رمز الحالة والرؤوس والنص.
resp.statusيحمل رمز حالة HTTP للاستجابة، وresp.http.*يمكن استخدامها للوصول إلى رؤوس استجابة محددة. - متغيرات العميل: المتغيرات المتعلقة بالعميل، مثل عنوان IP الخاص بالعميل (
client.ip) والوقت الذي تم فيه استلام الطلب (الآن). - متغيرات الخادم: تحتوي متغيرات الخادم على معلومات حول الخادم الأصلي، مثل عنوان IP الخاص بالخادم (
server.ip) ومنفذ الخادم (server.port).
المتغيرات المعرفة من قبل المستخدم
يتم إنشاء المتغيرات المعرفة من قبل المستخدم بواسطة مؤلف البرنامج النصي VCL لتخزين البيانات ومعالجتها داخل البرنامج النصي VCL. يمكن استخدام هذه المتغيرات لتمرير المعلومات بين أجزاء مختلفة من البرنامج النصي أو إجراء العمليات الحسابية أو تخزين النتائج المتوسطة.
لتحديد متغير محدد من قبل المستخدم، يمكنك استخدامتعيينالكلمة الرئيسية. على سبيل المثال:
sub vcl_recv {set req.http.my_variable = "بعض القيمة"؛ }
في هذا المثال، قمنا بإنشاء متغير رأس طلب جديد يسمىmy_variableوقم بتعيين قيمته على "بعض القيمة". ويمكن بعد ذلك استخدام هذا المتغير لاحقًا في البرنامج النصي.
معلمات الروتين الفرعي
معلمات الروتين الفرعي هي متغيرات يتم تمريرها إلى إجراءات Varnish الفرعية. الإجراءات الفرعية عبارة عن كتل قابلة لإعادة الاستخدام من كود VCL والتي يمكن استدعاؤها من أجزاء مختلفة من البرنامج النصي. تسمح لك المعلمات بتمرير البيانات إلى الإجراءات الفرعية، مما يجعلها أكثر مرونة وقابلة لإعادة الاستخدام.
فيما يلي مثال على روتين فرعي مع معلمة:
sub my_subroutine { new my_backend = Directors.round_robin(); my_backend.add_backend(backend.example); set req.backend_hint = my_backend.backend(); } sub vcl_recv { اتصل بـ my_subroutine؛ }
في هذا المثال،my_subroutineيتم استدعاء الروتين الفرعي منvcl_recv. يمكن للروتين الفرعي إجراء عمليات على الطلب، مثل تعيين تلميح الواجهة الخلفية.
تطبيقات عملية لمتغيرات ورنيش VCL
الآن بعد أن فهمنا أنواع متغيرات VCL، دعونا نستكشف بعض التطبيقات العملية لهذه المتغيرات في سيناريوهات العالم الحقيقي.
قرارات التخزين المؤقت
أحد الاستخدامات الأساسية لمتغيرات VCL هو اتخاذ قرارات التخزين المؤقت. من خلال فحص متغيرات الطلب والاستجابة، يمكنك تحديد ما إذا كان يجب تخزين طلب معين مؤقتًا أم لا.
على سبيل المثال، يمكنك استخدامreq.http.Cache-Controlرأس للتحقق مما إذا كان العميل قد طلب عدم تخزين الاستجابة مؤقتًا:
sub vcl_recv { if (req.http.Cache-Control ~ "no-cache|no-store") { return(pass); } }
في هذا المثال، إذاالتحكم في ذاكرة التخزين المؤقتيحتوي الرأس على "no-cache" أو "no-store"، ويتم تمرير الطلب مباشرة إلى الخادم الأصلي دون تخزينه مؤقتًا.
طلبات التوجيه
يمكن أيضًا استخدام متغيرات VCL لتوجيه الطلبات إلى واجهات خلفية مختلفة بناءً على معايير معينة. على سبيل المثال، يمكنك استخدامreq.urlمتغير لتوجيه الطلبات لأجزاء مختلفة من موقع الويب الخاص بك إلى خوادم خلفية مختلفة:
sub vcl_recv { if (req.url ~ "^/api/") { set req.backend_hint = backend.api; } else { set req.backend_hint = backend.main; } }
في هذا المثال، تبدأ الطلبات بـ/واجهة برمجة التطبيقات/يتم توجيهها إلىbackend.apiالخادم، بينما يتم توجيه كافة الطلبات الأخرى إلىbackend.mainالخادم.
تعديل الرؤوس
يمكنك استخدام متغيرات VCL لتعديل رؤوس الطلب والاستجابة. على سبيل المثال، يمكنك إضافة رؤوس مخصصة للطلب أو الاستجابة لتوفير معلومات إضافية أو للامتثال لسياسات أمان معينة.
sub vcl_recv { set req.http.X-Custom-Header = "قيمة مخصصة"؛ } sub vcl_deliver { set resp.http.X-Custom-Response-Header = "قيمة مخصصة أخرى"؛ }
في هذا المثال، رأس مخصصX- رأس مخصصيضاف إلى الطلب فيvcl_recvورأس استجابة مخصصX-Custom-Response-Headerيضاف فيvcl_deliver.
منتجاتنا من الورنيش
باعتبارنا موردًا للورنيش، فإننا نقدم مجموعة واسعة من منتجات الورنيش عالية الجودة المناسبة لمختلف التطبيقات. منتجاتنا تشملمعطف علوي غير لامع ذو أساس مائي,لمعان البولي يوريثين ذو الأساس المائي، وورنيش ذو أساس مائي.
تعتبر هذه الورنيشات ذات الأساس المائي صديقة للبيئة وسهلة التطبيق وتوفر حماية ممتازة ولمسة نهائية للجلود والمواد الأخرى. سواء كنت حرفيًا جلديًا صغيرًا أو مصنعًا واسع النطاق، فإن الورنيش الخاص بنا يمكنه تلبية احتياجاتك.
خاتمة
تعد متغيرات Varnish VCL أدوات قوية تسمح لك بتخصيص سلوك Varnish ليناسب متطلباتك المحددة. ومن خلال فهم الأنواع المختلفة للمتغيرات وتطبيقاتها، يمكنك تحسين التخزين المؤقت والتوجيه والعمليات الأخرى، مما يؤدي إلى تحسين أداء وكفاءة تطبيقات الويب الخاصة بك.
إذا كنت مهتمًا بمعرفة المزيد عن منتجاتنا من الورنيش أو لديك أي أسئلة حول متغيرات Varnish VCL، فلا تتردد في الاتصال بنا لمناقشة الشراء. نحن ملتزمون بتزويدك بأفضل الحلول والدعم.
مراجع
- توثيق الورنيش: https://varnish-cache.org/docs/
- دروس الورنيش VCL: https://www.varnish-software.com/tutorials/vcl/
