Skip to main content
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.
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().

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 trong file webpack.mix.js.

Background requests

v3.6.0+ 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 để 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.
Ở 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. 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.