Отключение SSR для страницы в Inertia
Давайте рассмотрим ситуацию, когда SSR включён для всего сайта, но один раздел тянет только браузерные API или тяжёлый виджет, который на Node падает. Проще оставить SSR для витрины и новостей, а внутреннюю панель отдавать как чистый клиентский экран без попытки пререндера.
Inertia умеет исключать
шаблоны маршрутов из SSR.
В middleware приложения
задают свойство withoutSsr:
массив масок в стиле Laravel,
и для совпавших адресов
адаптер не шлёт запрос
на SSR-сервер.
Давайте откроем middleware и добавим маску для панели:
<?php
namespace App\Http\Middleware;
use Inertia\Middleware;
class HandleInertiaRequests extends Middleware
{
/**
* @var array<int, string>
*/
protected $withoutSsr = [
'console/*',
];
}
Давайте опишем страницу внутри исключённого раздела:
<?php
use Illuminate\Support\Facades\Route;
use Inertia\Inertia;
Route::get('/console/workers', function () {
return Inertia::render('Console/Workers', [
'room' => 'Ops',
]);
});
?>
Для адресов /staff/*
настройте middleware так,
чтобы SSR не применялся
к экранам работников
в личном кабинете Staff.