V Laravel Octane jsou klíčové rozdíly mezi instancí sandboxu a běžnou instancí:
Instance izolovaného prostoru
1. Klonovaná instance aplikace: Octane klonuje původní instanci aplikace, aby vytvořila instanci karantény pro každý příchozí požadavek. Tím je zajištěno, že každý požadavek má své vlastní izolované prostředí, což zabraňuje problémům s přetrváváním stavu mezi požadavky.2. Čistá konfigurace: Instance karantény obsahuje čistou kopii úložiště konfigurace, která je naklonována z čerstvé instance karantény. To zajišťuje, že jakékoli mutace konfigurací ovlivní pouze sandbox.
3. Vyprázdněná mezipaměť a relace: Instance karantény vyprázdní mezipaměť a stav relace, aby zabránila přetrvávání dat napříč požadavky.
4. Localized Translator: Instance sandboxu nastaví národní prostředí uvnitř překladače na původní národní prostředí, aby bylo zajištěno, že překladač bude resetován pro každý požadavek.
5. Auth Forget Guards: Instance sandboxu zapomene všechny stráže, které byly nastaveny během předchozích požadavků, aby byl zajištěn čistý stav.
Běžná instance
1. Původní instance aplikace: Běžná instance je původní instance aplikace, která přetrvává napříč požadavky.2. Trvalá konfigurace: Běžná instance používá původní úložiště konfigurace, což může vést k problémům s perzistencí stavu mezi požadavky.
3. Trvalá mezipaměť a relace: Běžná instance nevyprázdní mezipaměť a stav relace, což umožňuje, aby data přetrvávala napříč požadavky.
4. No Localized Translator: Běžná instance neresetuje národní prostředí překladače, což může vést k problémům, pokud se aplikace spoléhá na nastavení specifická pro národní prostředí.
5. Persistent Auth Guards: Běžná instance nezapomíná na žádné strážce, které byly nastaveny během předchozích požadavků, což může vést k bezpečnostním problémům, pokud není správně spravováno.
Nejlepší postupy
1. Vyhněte se předávání instance aplikace: Vyhněte se předávání instance aplikace přímo službám nebo singletonům. Místo toho použijte pomocníka `app()` nebo `Container::getInstance()`, abyste zajistili, že se použije správná instance.2. Použít zpětná volání: Použijte zpětná volání k vrácení instance karantény namísto přímého předávání instance aplikace.
Pochopením těchto rozdílů a dodržováním osvědčených postupů můžete zajistit, že vaše aplikace běží efektivně a bezpečně s Octane[1][5].
Citace:[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