> ## 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

<Warning>Bạn đang xem tài liệu Inertia.js v2. Inertia.js v3 đã được phát hành và hiện là phiên bản mặc định. Hãy xem [hướng dẫn nâng cấp](/v3/getting-started/upgrade-guide) để bắt đầu.</Warning>

Một thách thức phổ biến khi xây dựng ứng dụng một trang là làm mới asset của website khi chúng thay đổi. Inertia giúp việc này đơn giản bằng cách cho phép theo dõi phiên bản hiện tại của asset. Khi asset thay đổi, ở request tiếp theo Inertia sẽ tự động thực hiện một lần tải toàn bộ trang thay vì visit XHR.

## 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

Cơ chế làm mới asset trong Inertia dựa trên giả định rằng một lần hard page visit sẽ khiến asset được tải lại. Tuy nhiên, bản thân Inertia không trực tiếp ép việc này xảy ra. Thông thường bạn cần dùng một kỹ thuật cache busting, chẳng hạn thêm query parameter phiên bản vào cuối URL của asset.

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`.

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

Nếu muốn tự kiểm soát việc refresh asset, bạn có thể trả về một giá trị cố định từ phương thức `version` trong middleware `HandleInertiaRequests`. Điều này tắt cơ chế asset versioning tự động của Inertia.

Ví dụ, nếu muốn thông báo cho người dùng khi frontend có phiên bản mới, bạn vẫn có thể đưa asset version thực tế lên frontend bằng cách thêm nó vào [shared data](/v2/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, bạn có thể theo dõi thuộc tính `version` và hiển thị thông báo khi phát hiện phiên bản 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 v2 chính thức](https://inertiajs.com/docs/v2/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.
