În Laravel Octane, diferențele cheie dintre o instanță sandbox și o instanță obișnuită sunt:
Instanță Sandbox
1. Instanță de aplicație clonată: Octane clonează instanța originală a aplicației pentru a crea o instanță sandbox pentru fiecare solicitare primită. Acest lucru asigură că fiecare cerere are propriul mediu izolat, prevenind problemele de persistență a stării între cereri.2. Clean Configuration: instanța sandbox include o copie curată a depozitului de configurare, care este clonată din noua instanță sandbox. Acest lucru asigură că orice mutații ale configurațiilor afectează numai sandbox-ul.
3. Solirea memoriei cache și a sesiunii: instanța sandbox șterge memoria cache și starea sesiunii pentru a împiedica orice date să rămână între solicitări.
4. Traducător localizat: instanța sandbox setează localurile din interiorul traducătorului la localurile originale pentru a se asigura că traducătorul este resetat pentru fiecare solicitare.
5. Auth Forget Guards: instanța sandbox uită orice garduri care au fost setate în timpul solicitărilor anterioare pentru a asigura o stare curată.
Instanță obișnuită
1. Instanța de aplicație originală: Instanța obișnuită este instanța de aplicație originală, care persistă în toate solicitările.2. Configurație persistentă: instanța obișnuită utilizează depozitul de configurare original, ceea ce poate duce la probleme de persistență a stării între cereri.
3. Cache și sesiune persistente: instanța obișnuită nu șterge memoria cache și starea sesiunii, permițând datelor să persistă între solicitări.
4. Fără traducător localizat: instanța obișnuită nu resetează localurile traducătorului, ceea ce poate duce la probleme dacă aplicația se bazează pe setări specifice localității.
5. Gărzi de autorizare persistente: instanța obișnuită nu uită nicio gardă care a fost setată în timpul solicitărilor anterioare, ceea ce poate duce la probleme de securitate dacă nu este gestionat corespunzător.
Cele mai bune practici
1. Evitați transmiterea instanței aplicației: evitați transmiterea instanței aplicației direct către servicii sau singleton-uri. În schimb, utilizați ajutorul `app()` sau `Container::getInstance()` pentru a vă asigura că este utilizată instanța corectă.2. Utilizați apeluri inverse: utilizați apeluri inverse pentru a returna instanța sandbox în loc să transmiteți direct instanța aplicației.
Înțelegând aceste diferențe și respectând cele mai bune practici, vă puteți asigura că aplicația dumneavoastră rulează eficient și sigur cu Octane[1][5].
Citate:[1] https://www.getoctane.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-analysis.delivered
[5] https://divinglaravel.com/laravel-octane-bootstrapping-the-application-and-handling-requests