Есть ли разница для веб-браузера, когда серверная часть использует webflux или простой контроллер отдыха?
Предположим, у нас есть 2 сервиса отдыха:
// a rest controller
@GetMapping
private List<Employee> getAllEmployees() {
return employeeRepository.findAllEmployees();
}
// другой контроллер
@GetMapping
private Flux<Employee> getAllEmployees() {
return employeeRepository.findAllEmployees(); // suppose reactive db driver here
}
Есть ли разница между этим кодом для клиентского веб-браузера?
1 ответ
Обычный контроллер отдыха: предположим, что сервер вернет около 10000 записей. В этом случае сервер ожидает, пока база данных вернет все данные, и эти данные будут отправлены в качестве ответа. Таким образом, вы получаете весь ответ за один раз, браузер будет постоянно загружаться с пустой страницей, и это плохой опыт в эту современную эпоху.
Реактивный контроллер: в реактивном контроллере webflux spring используется концепция противодавления. В противодавлении это открытое соединение между сервером и базой данных, поэтому все полученные записи будут постоянно отправляться в качестве ответа. Следовательно, нет пустого экрана и улучшено взаимодействие с пользователем.
Примечание: соединение между браузером останется неизменным до тех пор, пока все данные не будут загружены в браузер.