Laravel Octane では、サンドボックス インスタンスと通常のインスタンスの主な違いは次のとおりです。
サンドボックスインスタンス
1. クローンされたアプリケーション インスタンス: Octane は元のアプリケーション インスタンスをクローンして、受信リクエストごとにサンドボックス インスタンスを作成します。これにより、各リクエストに独自の隔離された環境が確保され、リクエスト間の状態の永続性の問題が防止されます。2. クリーンな構成: サンドボックス インスタンスには、新しいサンドボックス インスタンスから複製された構成リポジトリのクリーン コピーが含まれています。これにより、構成に対する変更がサンドボックスにのみ影響することが保証されます。
3. フラッシュされたキャッシュとセッション: サンドボックス インスタンスは、リクエスト間でデータが保持されないようにキャッシュとセッション状態をフラッシュします。
4. ローカライズされたトランスレータ: サンドボックス インスタンスは、トランスレータ内のロケールを元のロケールに設定し、リクエストごとにトランスレータがリセットされるようにします。
5. 認証のガードの忘れ: サンドボックス インスタンスは、クリーンな状態を確保するために、以前のリクエスト中に設定されたガードをすべて忘れます。
通常のインスタンス
1. 元のアプリケーション インスタンス: 通常のインスタンスは元のアプリケーション インスタンスであり、リクエスト間で存続します。2. 永続的な構成: 通常のインスタンスは元の構成リポジトリを使用するため、リクエスト間で状態の永続性の問題が発生する可能性があります。
3. 永続的なキャッシュとセッション: 通常のインスタンスはキャッシュとセッションの状態をフラッシュしないため、リクエスト間でデータを永続化できます。
4. ローカライズされたトランスレーターなし: 通常のインスタンスはトランスレーターのロケールをリセットしません。これにより、アプリケーションがロケール固有の設定に依存している場合に問題が発生する可能性があります。
5. 永続的な認証ガード: 通常のインスタンスは、以前のリクエスト中に設定されたガードを忘れません。これは、適切に管理されていない場合、セキュリティの問題につながる可能性があります。
ベストプラクティス
1. アプリケーション インスタンスの受け渡しを避ける: アプリケーション インスタンスをサービスまたはシングルトンに直接受け渡さないようにします。代わりに、`app()` ヘルパーまたは `Container::getInstance()` を使用して、正しいインスタンスが使用されていることを確認します。2. コールバックを使用する: アプリケーション インスタンスを直接渡す代わりに、コールバックを使用してサンドボックス インスタンスを返します。
これらの違いを理解し、ベスト プラクティスに従うことで、Octane を使用してアプリケーションを効率的かつ安全に実行できるようになります[1][5]。
引用:[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