In Laravel Octane, le differenze principali tra un'istanza sandbox e un'istanza normale sono:
Istanza sandbox
1. Istanza dell'applicazione clonata: Octane clona l'istanza dell'applicazione originale per creare un'istanza sandbox per ogni richiesta in arrivo. Ciò garantisce che ogni richiesta abbia il proprio ambiente isolato, evitando problemi di persistenza dello stato tra le richieste.2. Configurazione pulita: l'istanza sandbox include una copia pulita del repository di configurazione, che viene clonato dalla nuova istanza sandbox. Ciò garantisce che eventuali modifiche alle configurazioni influiscano solo sulla sandbox.
3. Scaricamento della cache e della sessione: l'istanza sandbox scarica la cache e lo stato della sessione per impedire che i dati persistano tra le richieste.
4. Traduttore localizzato: l'istanza sandbox imposta le impostazioni locali all'interno del traduttore sulle impostazioni locali originali per garantire che il traduttore venga reimpostato per ogni richiesta.
5. Auth Forget Guards: l'istanza sandbox dimentica tutte le protezioni impostate durante le richieste precedenti per garantire uno stato pulito.
Istanza regolare
1. Istanza dell'applicazione originale: l'istanza regolare è l'istanza dell'applicazione originale, che persiste tra le richieste.2. Configurazione persistente: l'istanza normale utilizza il repository di configurazione originale, il che può portare a problemi di persistenza dello stato tra le richieste.
3. Cache e sessione persistenti: l'istanza normale non svuota la cache e lo stato della sessione, consentendo ai dati di persistere tra le richieste.
4. Nessun traduttore localizzato: l'istanza normale non reimposta le impostazioni locali del traduttore, il che può causare problemi se l'applicazione si basa su impostazioni specifiche della locale.
5. Protezioni di autenticazione persistenti: l'istanza normale non dimentica le protezioni impostate durante le richieste precedenti, il che può portare a problemi di sicurezza se non gestite correttamente.
Migliori pratiche
1. Evita di passare l'istanza dell'applicazione: evita di passare l'istanza dell'applicazione direttamente ai servizi o ai singleton. Utilizzare invece l'helper `app()` o `Container::getInstance()` per garantire che venga utilizzata l'istanza corretta.2. Utilizza callback: utilizza i callback per restituire l'istanza sandbox invece di passare direttamente l'istanza dell'applicazione.
Comprendendo queste differenze e seguendo le migliori pratiche, puoi garantire che la tua applicazione funzioni in modo efficiente e sicuro con Octane[1][5].
Citazioni:[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