Есть сервер на соседнем континенте до которого большой RTT и есть веб-страница, которая использует много ajax запросов, которые из за большого RTT делают интерфейс сильно неотзывчивым. Существует ли какой-нибудь способ заставить ajax запросы использовать одно keep-alive соединение (или пул подобных соединений как это делает браузер при загрузке страницы), чтобы не тратить время на TLS-handshake на каждый ajax-запрос?
Здравствуйте, Anton Batenev, Вы писали:
AB>Существует ли какой-нибудь способ заставить ajax запросы использовать одно keep-alive соединение (или пул подобных соединений как это делает браузер при загрузке страницы), чтобы не тратить время на TLS-handshake на каждый ajax-запрос?
Здравствуйте, wildwind, Вы писали:
w> AB>Существует ли какой-нибудь способ заставить ajax запросы использовать одно keep-alive соединение (или пул подобных соединений как это делает браузер при загрузке страницы), чтобы не тратить время на TLS-handshake на каждый ajax-запрос? w> HTTP/2?
HTTP/2 сервером поддерживается (по крайней мере в объеме модуля http2 из nginx), но разработка говорит, что все равно медленно. Оно должно из коробки работать или все же требуется доработка на стороне js?
Здравствуйте, Anton Batenev, Вы писали:
AB>HTTP/2 сервером поддерживается (по крайней мере в объеме модуля http2 из nginx)
"Поддерживается" это одно, а "реально используется" совсем другое. Посмотри в DevTools на запросы, там должно быть показано.
AB>но разработка говорит, что все равно медленно.
Ну с большим RTT чудес не ждите.
AB>Оно должно из коробки работать или все же требуется доработка на стороне js?
Должно работать, если поддерживает сервер и браузер и ничто не мешает.
Но доработка скорее всего потребуется. Тут ситуация примерно та же, как с оптимизацией SQL запросов. Нужно находить узкое место, а оно может оказаться где угодно, да не одно.
Здравствуйте, Anton Batenev, Вы писали:
AB>Hello!
AB>Есть сервер на соседнем континенте до которого большой RTT и есть веб-страница, которая использует много ajax запросов, которые из за большого RTT делают интерфейс сильно неотзывчивым. Существует ли какой-нибудь способ заставить ajax запросы использовать одно keep-alive соединение (или пул подобных соединений как это делает браузер при загрузке страницы), чтобы не тратить время на TLS-handshake на каждый ajax-запрос?
Ну, обычно в браузерах AJAX реквесты ведут себя ровно так же, как и "обычные" запросы. То есть удерживается пул из 2-4 соединений.
Поэтому я бы для начала потрассировал запросы на стороне сервера, чтобы убедиться, что
а) действительно одна страница порождает много параллельных запросов
б) действительно SSL handshake играет значительную роль во времени отклика.
Я интуитивно ожидаю строго обратного — что запросы идут через 1-2 соединения, и именно из-за этого, а не из-за SSL handshake теряется время.
Тогда единственный шанс — переделывать приложение, обучая его делать меньше более крупных запросов.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.