当后端使用 webflux 或简单的休息控制器时,网络浏览器有什么区别吗?
Are there any difference for web browser when backend use webflux or simple rest controller?
假设我们有 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
}
a 此代码与客户端的 Web 浏览器有何不同?
Normal Rest Controller:假设服务器要 return 大约 10000 records.In 这种情况下服务器等待数据库 return所有数据和此数据作为响应转发。所以你同时收到所有响应,浏览器将不断加载空白页面,这在这个现代时代是一种糟糕的体验
Reactive Controller:在 webflux spring Reactive Controller 中,它们是 back pressure 的概念。在 背压中,它们是服务器和数据库之间的开放连接,因此无论收到什么记录,都将作为响应不断发出 。因此没有黑屏和更好的用户体验。
注意:浏览器之间的连接将保持不变,直到浏览器中加载所有数据
假设我们有 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
}
a 此代码与客户端的 Web 浏览器有何不同?
Normal Rest Controller:假设服务器要 return 大约 10000 records.In 这种情况下服务器等待数据库 return所有数据和此数据作为响应转发。所以你同时收到所有响应,浏览器将不断加载空白页面,这在这个现代时代是一种糟糕的体验
Reactive Controller:在 webflux spring Reactive Controller 中,它们是 back pressure 的概念。在 背压中,它们是服务器和数据库之间的开放连接,因此无论收到什么记录,都将作为响应不断发出 。因此没有黑屏和更好的用户体验。
注意:浏览器之间的连接将保持不变,直到浏览器中加载所有数据