في Laravel Octane، الاختلافات الرئيسية بين مثيل وضع الحماية والمثيل العادي هي:
مثيل وضع الحماية
1. مثيل التطبيق المستنسخ: يقوم Octane باستنساخ مثيل التطبيق الأصلي لإنشاء مثيل وضع الحماية لكل طلب وارد. وهذا يضمن أن كل طلب له بيئة معزولة خاصة به، مما يمنع مشكلات استمرار الحالة بين الطلبات.2. التكوين النظيف: يتضمن مثيل وضع الحماية نسخة نظيفة من مستودع التكوين، والذي تم استنساخه من مثيل وضع الحماية الجديد. وهذا يضمن أن أي تغييرات في التكوينات تؤثر فقط على وضع الحماية.
3. مسح ذاكرة التخزين المؤقت والجلسة : يقوم مثيل وضع الحماية بمسح ذاكرة التخزين المؤقت وحالة الجلسة لمنع استمرار أي بيانات عبر الطلبات.
4. المترجم المحلي: يقوم مثيل وضع الحماية بتعيين اللغات داخل المترجم إلى اللغات الأصلية لضمان إعادة تعيين المترجم لكل طلب.
5. Auth Forget Guards: ينسى مثيل وضع الحماية أي حراس تم تعيينهم أثناء الطلبات السابقة لضمان حالة نظيفة.
المثيل العادي
1. مثيل التطبيق الأصلي: المثيل العادي هو مثيل التطبيق الأصلي، والذي يستمر عبر الطلبات.2. التكوين المستمر: يستخدم المثيل العادي مستودع التكوين الأصلي، مما قد يؤدي إلى مشكلات استمرار الحالة بين الطلبات.
3. ذاكرة التخزين المؤقت والجلسة الدائمة: لا يقوم المثيل العادي بمسح ذاكرة التخزين المؤقت وحالة الجلسة، مما يسمح باستمرار البيانات عبر الطلبات.
4. لا يوجد مترجم محلي: لا يقوم المثيل العادي بإعادة تعيين لغات المترجم، مما قد يؤدي إلى مشكلات إذا كان التطبيق يعتمد على الإعدادات المحلية الخاصة.
5. حارس المصادقة المستمر: لا ينسى المثيل العادي أي حراس تم تعيينهم أثناء الطلبات السابقة، مما قد يؤدي إلى مشكلات أمنية إذا لم تتم إدارتها بشكل صحيح.
أفضل الممارسات
1. تجنب تمرير مثيل التطبيق: تجنب تمرير مثيل التطبيق مباشرة إلى الخدمات أو المفردات. بدلاً من ذلك، استخدم المساعد `app()` أو `Container::getInstance()` للتأكد من استخدام المثيل الصحيح.2. استخدام عمليات الاسترجاعات: استخدم عمليات الاسترجاعات لإرجاع مثيل وضع الحماية بدلاً من تمرير مثيل التطبيق مباشرة.
ومن خلال فهم هذه الاختلافات واتباع أفضل الممارسات، يمكنك التأكد من تشغيل تطبيقك بكفاءة وأمان باستخدام Octane[1][5].
الاستشهادات:[1] https://www.geoctane.io/sandbox
[2] https://salesforce.stackexchange.com/questions/42163/performance-difference-between-sandbox-and-production-instances
[3] https://otoy1473900221.zendesk.com/hc/en-us/articles/115001577606-Instances
[4] https://blog.octanesolutions.com.au/sandbox-analogy.delivered
[5] https://divinglaravel.com/laravel-octane-bootstrapping-the-application-and-handling-requests