In Laravel Octane sind die Hauptunterschiede zwischen einer Sandbox-Instanz und einer regulären Instanz:
Sandbox-Instanz
1. Geklonte Anwendungsinstanz: Octane klont die ursprüngliche Anwendungsinstanz, um für jede eingehende Anfrage eine Sandbox-Instanz zu erstellen. Dadurch wird sichergestellt, dass jede Anfrage über eine eigene isolierte Umgebung verfügt, wodurch Probleme mit der Statuspersistenz zwischen Anfragen verhindert werden.2. Saubere Konfiguration: Die Sandbox-Instanz enthält eine saubere Kopie des Konfigurations-Repositorys, das von der neuen Sandbox-Instanz geklont wird. Dadurch wird sichergestellt, dass sich etwaige Änderungen an den Konfigurationen nur auf die Sandbox auswirken.
3. Cache und Sitzung geleert: Die Sandbox-Instanz löscht den Cache und den Sitzungsstatus, um zu verhindern, dass Daten über Anfragen hinweg bestehen bleiben.
4. Lokalisierter Übersetzer: Die Sandbox-Instanz setzt die Gebietsschemas innerhalb des Übersetzers auf die ursprünglichen Gebietsschemas, um sicherzustellen, dass der Übersetzer bei jeder Anfrage zurückgesetzt wird.
5. Auth Forget Guards: Die Sandbox-Instanz vergisst alle Guards, die bei früheren Anfragen festgelegt wurden, um einen sauberen Zustand sicherzustellen.
Reguläre Instanz
1. Ursprüngliche Anwendungsinstanz: Die reguläre Instanz ist die ursprüngliche Anwendungsinstanz, die über alle Anfragen hinweg bestehen bleibt.2. Persistente Konfiguration: Die reguläre Instanz verwendet das ursprüngliche Konfigurations-Repository, was zu Problemen mit der Statuspersistenz zwischen Anforderungen führen kann.
3. Persistenter Cache und Sitzung: Die reguläre Instanz leert den Cache und den Sitzungsstatus nicht, sodass Daten über Anforderungen hinweg bestehen bleiben.
4. Kein lokalisierter Übersetzer: Die reguläre Instanz setzt die Gebietsschemata des Übersetzers nicht zurück, was zu Problemen führen kann, wenn die Anwendung auf gebietsschemaspezifische Einstellungen angewiesen ist.
5. Persistente Auth Guards: Die reguläre Instanz vergisst keine Guards, die bei früheren Anfragen festgelegt wurden, was bei unsachgemäßer Verwaltung zu Sicherheitsproblemen führen kann.
Best Practices
1. Vermeiden Sie die Übergabe von Anwendungsinstanzen: Vermeiden Sie die direkte Übergabe der Anwendungsinstanz an Dienste oder Singletons. Verwenden Sie stattdessen den Helfer „app()“ oder „Container::getInstance()“, um sicherzustellen, dass die richtige Instanz verwendet wird.2. Rückrufe verwenden: Verwenden Sie Rückrufe, um die Sandbox-Instanz zurückzugeben, anstatt die Anwendungsinstanz direkt zu übergeben.
Wenn Sie diese Unterschiede verstehen und Best Practices befolgen, können Sie sicherstellen, dass Ihre Anwendung mit Octane[1][5] effizient und sicher läuft.
Zitate:[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