アセットのバージョン管理

シングルページアプリを構築する際の一般的な課題の1つは、変更されたときにサイトアセットを更新することです。幸いなことに、Inertiaを使用すると、サイトアセットの現在のバージョンをオプションで追跡することで、これが簡単になります。アセットが変更されると、Inertiaは次のリクエストでXHR訪問の代わりに完全なページ訪問を自動的に行います。

設定

自動アセット更新を有効にするには、Inertiaにアセットの現在のバージョンを伝える必要があります。これは、アセットが更新されたときに変更される限り、任意の文字列(文字、数字、またはファイルハッシュ)にすることができます。

通常、アプリケーションのアセットバージョンは、InertiaのHandleInertiaRequestsミドルウェアのversionメソッド内で指定できます。

class HandleInertiaRequests extends Middleware
{
    public function version(Request $request)
    {
        return parent::version($request);
    }
}
HandleInertiaRequestsミドルウェアは、Laravelアプリケーションに適切なデフォルトを提供します。これは、「app.asset_url」構成値のハッシュまたは「mix-manifest.json」ファイルを使用します。Viteを使用する場合、Inertiaは「build/manifest.json」ファイルのハッシュを使用します。

または、アセットバージョンは、Inertia::version()メソッドを使用して手動で提供できます。

use Inertia\Inertia;

Inertia::version($version);
Inertia::version(fn () => $version); // Lazily...

キャッシュバスティング

Inertiaでのアセット更新は、ハードページ訪問によってアセットがリロードされるという前提で機能します。ただし、Inertiaは実際にこれを強制する処理は何も行いません。通常、これは何らかの形式のキャッシュバスティングで行われます。たとえば、アセットURLの末尾にバージョンクエリパラメータを追加します。

Laravel Mixを使用している場合は、有効にすることでこれを自動的に行うことができます バージョン管理 webpack.mix.jsファイルで。LaravelのVite統合を使用する場合、アセットのバージョン管理は自動的に行われます。