Skip to main content
Đây là tài liệu Inertia.js v1, phiên bản không còn được duy trì tích cực. Vui lòng tham khảo tài liệu v3.
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 Breeze hoặc Jetstream, bạn có thể cài scaffold của starter kit với hỗ trợ Inertia SSR được cấu hình sẵn bằng flag --ssr.

Cài đặt dependency

Nếu không dùng Laravel starter kit và muốn cấu hình SSR thủ công, trước tiên chúng ta sẽ cài các dependency bổ sung cần cho server-side rendering. Bước này chỉ cần thiết với adapter Vue, vì vậy bạn có thể bỏ qua nếu dùng React hoặc Svelte.
Sau đó, hãy đảm bảo đã cài phiên bản mới nhất của adapter Inertia dành cho Laravel.

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

Tiếp theo, chúng ta sẽ tạo file resources/js/ssr.js trong dự án Laravel để làm entry point cho SSR.
File này sẽ rất giống resources/js/app.js, ngoại trừ việc nó không chạy trong trình duyệt mà chạy trong Node.js. Sau đâ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.

Thiết lập Vite

Tiếp theo, chúng ta cần cập nhật cấu hình Vite để build file ssr.js mới. Có thể thực hiện bằng cách thêm thuộc tính ssr vào cấu hình Vite plugin của Laravel trong file vite.config.js.

Cập nhật script Npm

Tiếp theo, hãy cập nhật script build trong file package.json để build cả file ssr.js mới.
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.
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.

Hydration phía client

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.

Laravel Forge

Để chạy SSR server trên Forge, bạn nên tạo một daemon mới chạy php artisan inertia:start-ssr từ thư mục gốc ứng dụng. Hoặc bạn có thể dùng tích hợp Inertia có sẵn trong dashboard quản lý ứng dụng Forge. Sau đó, mỗi lần triển khai ứng dụng, bạn có thể tự động restart SSR server bằng command php artisan inertia:stop-ssr. Command này dừng SSR server hiện tại, buộc công cụ giám sát tiến trình khởi động một server mới.

Heroku

Để chạy SSR server trên Heroku, hãy cập nhật cấu hình web trong Procfile để chạy SSR server trước khi khởi động web server.
Lưu ý, bạn phải cài buildpack heroku/nodejs bên cạnh heroku/php để SSR server có thể chạy.

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