Angular universal - запросы на стороне сервера кэшируются для клиента

Я видел много статей о кэшировании данных для клиента в угловых универсальных приложениях, поэтому он не дублирует запросы на клиенте, которые уже были разрешены на сервере.

Я просто не понимаю, как данные передаются с сервера на клиент. Вставить JSON в предварительно отрендеренный HTML или я что-то упустил?

1 ответ

Начиная с углового 5, внутри углового сердечника есть модуль, называемый TransferStateModule это делает это для вас. https://angular.io/api/platform-browser/TransferState

Вы просто добавляете свой ответ API в кэш на стороне сервера вместе с StateKey (в основном просто как строка), он записывается в DOM как Json перед отправкой файла index.html клиенту, там вы запрашиваете StateKey и получить результат от Json.

В официальном Universal Starter Kit вы можете увидеть, где и что регистрировать: https://github.com/angular/universal-starter


Обновление Angular 6

Вам не нужно устанавливать ключ состояния самостоятельно. Новый TransferStateModule имеет перехватчик HttpClient, который устанавливает ключи автоматически! Вы все еще можете сделать это самостоятельно, если хотите иметь больший контроль, но теперь это так же просто, как добавить модуль (в новейшем универсальном стартовом наборе он импортирован по умолчанию!)

Другие вопросы по тегам