Как заставить браузер работать через одно соединение?
Веб-приложение с собственным как-бы сервером, на одного клиента.
Сервер обеспечивает одно соединение. От слова совсем! После приема соединения слушающий сокет закрывается. Эта особенность сервера не обсуждается.
Браузер посылает запрос по открытому соединению.
Сервер отвечает на запросы в режиме keep alive.
Браузер отображает страницу.
Все отлично работает с Лисой и Оперой, а с Хромом проблемы.
Но при низких скоростях отдачи контента, Хром пытается открыть еще соединение, а там бубука. Картинки не отображаются. В консоли ошибка ERR_CONNECTION_REFUSED. Подозреваю что такая ошибка выскочит с другими браузерами, но при меньших скоростях.
Как заставить браузер работать через одно соединение? Нутром чую, надо отправить браузеру какой-то мета тег. Какой?
Насколько знаю, через мета-тэги никак не изменить. Там вроде зашит лимит в хроме (6 или 10 по-умолчанию). Можно попробовать через реестр на конкретной машине (how change limit), хром по идее должен скушать под виндой.
Поделитесь пожалуйста секретом, что это такое и зачем? Какая то организация работы через очень медленное соединение? косячный провайдер?
p.s. обычно косяки канального уровня обходятся vpn, поднимайте его по одному единственному доступному соединению, а уже внутри него работайте со скольки угодно
Вы вообще имеете какой-то контроль над сервером? Потому что он сконфигурирован неправильно. Объясню, почему. Любой сервер может иметь ограничения на число соединений с клиентом (обычно, больше чем одно, естественно), и клиенты это понимают (не через метатеги).
В принципе, вы можете, наверное, переписать весь механизм загрузки asset-ов, запуская его по onLoad всей страницы, а затем запрашивая и вставляя картинки по одной в DOM через JavaScript. Но это же чудовищно.
Поставьте перед "как бы сервером" нормальный сервер-прокси, пусть она к нему одно соединение держит, или вообще или на каждого клиента. а с клиентами уже по человечески работает, без этих необсуждаемых фантазий
Для firefox:
about:config: network.http.max-connections-per-server
То, что у вас работают некоторые браузеры - скорее случайность, чем правильная работа. Видимо какие-то статические данные они уже закешировали, поэтому им одного соединения хватает.
Если есть контроль над сайтом хотя бы, то можно придумать Js обертку которая будет по 1 загружать ресурсы. Это универсальное решение чтобы и в хроме и сафари работало.
С хромом по идее на уровне расширения можно решить вопрос тоже, есть же ublock значит он может контролировать всё http запросы, и просто может стопить пока хотя бы 1 еще не загружен, думаю на фрилансе вам напишут по быстрому за 2000-3000 рублей.