V Laravel Octane sú kľúčové rozdiely medzi inštanciou karantény a bežnou inštanciou:
Inštancia karantény
1. Klonovaná inštancia aplikácie: Octane klonuje pôvodnú inštanciu aplikácie, aby vytvorila inštanciu karantény pre každú prichádzajúcu požiadavku. To zaisťuje, že každá požiadavka má svoje vlastné izolované prostredie, čím sa predchádza problémom s pretrvávaním stavu medzi požiadavkami.2. Čistá konfigurácia: Inštancia karantény obsahuje čistú kópiu archívu konfigurácie, ktorá je naklonovaná z čerstvej inštancie karantény. To zaisťuje, že akékoľvek mutácie konfigurácií ovplyvnia iba karanténu.
3. Vyprázdnená vyrovnávacia pamäť a relácia: Inštancia karantény vyprázdni vyrovnávaciu pamäť a stav relácie, aby sa zabránilo pretrvávaniu akýchkoľvek údajov pri všetkých požiadavkách.
4. Localized Translator: Inštancia karantény nastaví miestne nastavenia v prekladači na pôvodné miestne nastavenia, aby sa zabezpečilo, že prekladač bude resetovaný pre každú požiadavku.
5. Auth Forget Guards: Inštancia karantény zabudne na všetky stráže, ktoré boli nastavené počas predchádzajúcich požiadaviek, aby sa zabezpečil čistý stav.
Bežný prípad
1. Pôvodná inštancia aplikácie: Bežná inštancia je pôvodná inštancia aplikácie, ktorá pretrváva naprieč požiadavkami.2. Trvalá konfigurácia: Bežná inštancia používa pôvodné úložisko konfigurácie, čo môže viesť k problémom so stálosťou stavu medzi požiadavkami.
3. Trvalá vyrovnávacia pamäť a relácia: Bežná inštancia nevyprázdni vyrovnávaciu pamäť a stav relácie, čo umožňuje, aby údaje zostali zachované naprieč požiadavkami.
4. No Localized Translator: Bežná inštancia neresetuje miestne nastavenia prekladača, čo môže viesť k problémom, ak sa aplikácia spolieha na nastavenia špecifické pre miestne nastavenia.
5. Persistent Auth Guards: Bežná inštancia nezabúda na žiadne stráže, ktoré boli nastavené počas predchádzajúcich požiadaviek, čo môže viesť k bezpečnostným problémom, ak nie je správne spravované.
Osvedčené postupy
1. Vyhnite sa odovzdávaniu inštancie aplikácie: Vyhnite sa odovzdávaniu inštancie aplikácie priamo službám alebo jednotkám. Namiesto toho použite pomocníka `app()` alebo `Container::getInstance()`, aby ste sa uistili, že sa použije správna inštancia.2. Použite spätné volania: Použite spätné volania na vrátenie inštancie karantény namiesto priameho odovzdávania inštancie aplikácie.
Pochopením týchto rozdielov a dodržiavaním osvedčených postupov môžete zaistiť, aby vaša aplikácia fungovala efektívne a bezpečne s Octane[1][5].
Citácie:[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