资产版本控制

构建单页应用程序时,一个常见的挑战是在网站资产更改后刷新它们。幸运的是,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 集成时,资产版本控制会自动完成。