I Laravel Octane är de viktigaste skillnaderna mellan en sandlådeinstans och en vanlig instans:
Sandbox-instans
1. Klonad applikationsinstans: Octane klonar den ursprungliga applikationsinstansen för att skapa en sandlådeinstans för varje inkommande begäran. Detta säkerställer att varje begäran har sin egen isolerade miljö, vilket förhindrar tillståndsproblem mellan förfrågningar.2. Ren konfiguration: Sandlådeinstansen inkluderar en ren kopia av konfigurationsförrådet, som klonas från den färska sandlådeinstansen. Detta säkerställer att eventuella mutationer i konfigurationerna endast påverkar sandlådan.
3. Tömd cache och session: Sandbox-instansen tömmer cacheminnet och sessionstillståndet för att förhindra att data kvarstår över förfrågningar.
4. Localized Translator: Sandbox-instansen ställer in språkinställningarna i översättaren till de ursprungliga språkinställningarna för att säkerställa att översättaren återställs för varje begäran.
5. Auth Forget Guards: Sandbox-instansen glömmer alla guards som ställts in under tidigare förfrågningar för att säkerställa ett rent tillstånd.
Vanlig instans
1. Original applikationsinstans: Den vanliga instansen är den ursprungliga applikationsinstansen, som kvarstår över förfrågningar.2. Persistent Configuration: Den vanliga instansen använder det ursprungliga konfigurationsförrådet, vilket kan leda till tillståndsproblem mellan förfrågningar.
3. Persistent cache och session: Den vanliga instansen tömmer inte cacheminnet och sessionstillståndet, vilket gör att data kvarstår över förfrågningar.
4. Ingen lokaliserad översättare: Den vanliga instansen återställer inte översättarens språkinställningar, vilket kan leda till problem om programmet förlitar sig på lokala inställningar.
5. Persistent Auth Guards: Den vanliga instansen glömmer inte några vakter som sattes under tidigare förfrågningar, vilket kan leda till säkerhetsproblem om de inte hanteras på rätt sätt.
Bästa metoder
1. Undvik att skicka applikationsinstansen: Undvik att skicka applikationsinstansen direkt till tjänster eller singletons. Använd istället `app()`-hjälpen eller `Container::getInstance()` för att säkerställa att rätt instans används.2. Använd återuppringningar: Använd återuppringningar för att returnera sandlådeinstansen istället för att skicka applikationsinstansen direkt.
Genom att förstå dessa skillnader och följa bästa praxis kan du säkerställa att din applikation körs effektivt och säkert med Octane[1][5].
Citat:[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