Skip to main content
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 để bắt đầu.
Server-side rendering render trước các trang JavaScript trên máy chủ, nhờ đó người truy cập nhận được HTML đã được render đầy đủ khi truy cập ứng dụng. Vì ứng dụng phục vụ HTML hoàn chỉnh, các công cụ tìm kiếm cũng dễ index website hơn. Server-side rendering sử dụng Node.js để render trang trong một tiến trình nền; vì vậy Node phải có sẵn trên máy chủ để SSR hoạt động đúng.

Laravel Starter Kit

Nếu đang dùng Laravel Starter Kits, Inertia SSR được hỗ trợ thông qua một build command:

Thêm entry point phía máy chủ

Để cấu hình SSR thủ công mà không dùng Laravel starter kit, trước tiên hãy tạo file entry point SSR trong project Laravel.
File này sẽ rất giống entry point của ứng dụng, ngoại trừ việc nó không chạy trong trình duyệt mà chạy trong Node.js. Dưới đây là ví dụ hoàn chỉnh.
Khi tạo file này, hãy nhớ bổ sung mọi phần còn thiếu so với app.js nhưng phù hợp để chạy ở chế độ SSR, chẳng hạn plugin hoặc custom mixin.

Clustering

Mặc định, SSR server chạy trên một thread duy nhất. Clustering khởi động nhiều Node server trên cùng một port, sau đó request được phân phối cho từng thread theo cơ chế round-robin. Bạn có thể bật clustering bằng cách truyền một đối số options thứ hai vào createServer.

Hydration phía client

Thiết lập Vite

Tiếp theo, cập nhật cấu hình Vite để build entry point SSR mới bằng cách thêm thuộc tính ssr vào cấu hình plugin Vite của Laravel trong file vite.config.js.

Cập nhật NPM script

Tiếp theo, cập nhật script build trong file package.json để build cả entry point SSR.
package.json
Giờ bạn có thể build cả bundle phía client và phía máy chủ.

Chạy SSR server

Sau khi đã build cả bundle phía client và phía máy chủ, bạn có thể chạy Inertia SSR server dựa trên Node bằng command sau.
Bạn có thể dùng tùy chọn --runtime để chỉ định runtime muốn sử dụng. Điều này cho phép chuyển từ runtime Node.js mặc định sang Bun.
Khi server đang chạy, bạn có thể truy cập ứng dụng trong trình duyệt với server-side rendering được bật. Thực tế, bạn có thể tắt hoàn toàn JavaScript mà vẫn điều hướng được trong ứng dụng.

Tắt SSR

Đôi khi bạn có thể muốn tắt server-side rendering cho một số trang hoặc route nhất định trong ứng dụng. Bạn có thể làm vậy bằng cách đặt giá trị cấu hình inertia.ssr.enabled thành false cho request hiện tại, thường trong service provider hoặc middleware.

Triển khai

Khi triển khai ứng dụng có SSR lên production, bạn cần build cả bundle phía client (app.js) và phía máy chủ (ssr.js), sau đó chạy SSR server như một background process, thường thông qua công cụ giám sát tiến trình như Supervisor.
Để dừng SSR server, chẳng hạn khi triển khai phiên bản mới của website, bạn có thể dùng Artisan command inertia:stop-ssr. Công cụ giám sát tiến trình (như Supervisor) cần chịu trách nhiệm tự động khởi động lại SSR server sau khi nó dừng.
Bạn có thể dùng Artisan command inertia:check-ssr để xác minh SSR server đang chạy. Điều này hữu ích sau khi deploy và rất phù hợp làm Docker health check để đảm bảo server phản hồi đúng như mong đợi.
Mặc định, hệ thống sẽ kiểm tra server-side bundle tồn tại trước khi gửi request tới SSR server. Trong một số trường hợp, chẳng hạn ứng dụng chạy trên nhiều server hoặc trong container, web server có thể không truy cập được SSR bundle. Để tắt kiểm tra này, đặt giá trị cấu hình inertia.ssr.ensure_bundle_exists thành false.

Laravel Cloud

Để chạy SSR server trên Laravel Cloud, bạn có thể dùng hỗ trợ Inertia SSR nguyên bản của Cloud.

Laravel Forge

Để chạy SSR server trên Forge, bạn có thể bật nó bằng tùy chọn Inertia SSR trong panel ứng dụng của site. Forge sẽ tạo daemon cần thiết và, nếu bạn chọn, cập nhật deploy script để khởi động lại SSR server sau mỗi lần deploy.

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