> ## Documentation Index
> Fetch the complete documentation index at: https://inertiajs-vi.tuantq.online/llms.txt
> Use this file to discover all available pages before exploring further.

# Quản lý phiên bản asset

Một thách thức phổ biến khi xây single-page app là refresh site asset khi chúng thay đổi. Inertia giúp việc này đơn giản bằng cách tùy chọn theo dõi version hiện tại của asset. Khi asset thay đổi, ở request tiếp theo Inertia tự động thực hiện full-page visit thay vì XHR visit.

## Cấu hình

Để bật cơ chế tự động làm mới asset, bạn cần cho Inertia biết phiên bản hiện tại của asset. Đây có thể là bất kỳ chuỗi tùy ý nào (chữ, số hoặc file hash), miễn là giá trị thay đổi khi asset được cập nhật.

Thông thường, phiên bản asset của ứng dụng có thể được chỉ định trong phương thức `version` của middleware Inertia `HandleInertiaRequests`.

```php theme={null}
class HandleInertiaRequests extends Middleware
{
    public function version(Request $request)
    {
        return parent::version($request);
    }
}
```

Ngoài ra, bạn có thể cung cấp phiên bản asset thủ công bằng phương thức `Inertia::version()`.

```php theme={null}
use Inertia\Inertia;

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

## Cache busting

Asset refreshing trong Inertia giả định full-page visit sẽ làm asset được tải lại. Tuy nhiên Inertia không trực tiếp ép việc này. Thông thường bạn dùng một dạng cache busting, ví dụ thêm version query parameter vào cuối asset URL.

Với tích hợp Vite của Laravel, asset versioning được thực hiện tự động. Nếu dùng Laravel Mix, bạn cũng có thể tự động hóa việc này bằng cách bật [versioning](https://laravel.com/docs/mix#versioning-and-cache-busting) trong file `webpack.mix.js`.

## Background requests

<Badge>v3.6.0+</Badge>

Version change được phát hiện trong background request như polling hoặc `router.reload()` không ép full-page navigation. Reload một request user chưa khởi tạo có thể làm mất state chưa lưu, vì vậy page hiện tại được giữ nguyên và visit do user khởi tạo tiếp theo sẽ nhận asset mới. Bạn có thể hook vào [`location` event](/v3/advanced/events#location) để phát hiện asset version change và hiển thị thông báo thay vì reload.

## Làm mới thủ công

Nếu muốn tự kiểm soát asset refreshing, có thể trả fixed value từ phương thức `version` trong middleware `HandleInertiaRequests`. Điều này tắt automatic asset versioning của Inertia.

Ví dụ, nếu muốn thông báo khi có phiên bản frontend mới, bạn vẫn có thể expose asset version thực tế lên frontend qua [shared data](/v3/data-props/shared-data).

```php theme={null}
class HandleInertiaRequests extends Middleware
{
    public function version(Request $request)
    {
        return null;
    }

    public function share(Request $request)
    {
        return array_merge(parent::share($request), [
            'version' => parent::version($request),
        ]);
    }
}
```

Ở frontend, có thể theo dõi property `version` và hiển thị thông báo khi phát hiện version mới.

***

## Tài liệu chính thức

Bài dịch này được đối chiếu từ [tài liệu Inertia.js v3 chính thức](https://inertiajs.com/docs/v3/advanced/asset-versioning). Nếu có khác biệt do phiên bản hoặc cập nhật mới, hãy ưu tiên tài liệu chính thức làm nguồn tham chiếu.
