LINUX.ORG.RU

Web-сервер и поведение браузера при обрыве соединения


0

1

Добрый день

Написал небольшой вэбсервер, нужно было выполнить ряд специфич задач. Т.к. запросов иногда бывает много, для экономии процессорного времени, если нет контента, который следует отдавать, вэбсервер обрывает соединение. Интересует вот что: как вообще должен реагировать браузер на обрыв соединения? Не будут ли выполняться последующие попытки соединения? И все ли браузеры одинаково реагируют на обрывы соединения со стороны сервера? Спасибо



Последнее исправление: nitroxolyne (всего исправлений: 2)

http работает в режиме запрос - ответ, ни браузер ни сервер соединение не держит. Как ты умудряешься его обрывать?

vvnab
()
Ответ на: комментарий от vvnab

Ответ отправляется в рамках соединения, которое инициировал клиент и по которому принимается запрос. Видимо, вы чего-то недопонимаете

nitroxolyne
() автор топика

«Постоянные соединения обеспечивают механизм, согласно которому клиент и сервер могут сообщить о разрыве TCP соединения. Это сигнализируется при помощи использования поля заголовка Connection. При получении сообщения о разрыве соединения клиент НЕ ДОЛЖЕН посылать больше запросов по этому соединению. »

ilovewindows ★★★★★
()
Ответ на: комментарий от nitroxolyne

То есть обрыв вместо 204? Понял, тогда прошу прощения. ))

vvnab
()
Ответ на: комментарий от ilovewindows

Ok/ Тут понятно. Другой пример: клиент посылает запрос серверу и требует 'http://example.com', сервер обрывает соединение. Может ли клиент после этого инициировать новое соединение, но уже с запросом 'http://www.example.com'?

nitroxolyne
() автор топика
Ответ на: комментарий от nitroxolyne

ну а попробовать епт, ведь все уже написано

думаю, если факт коннекта уже был то искать другой днс никакой браузер не будет

trashymichael ★★★
()

запросов иногда бывает много

Может есть проблемы с архитектурой сайта? Вообще, вместо polling можно использовать какие-нить web-sockets или что щас модно. Чтобы по-напрасну не дёргать сервер когда ничего нового нет.

если нет контента, который следует отдавать, вэбсервер обрывает соединение

а слабо отправить что-нить типа 304 not modified?

true_admin ★★★★★
()
Ответ на: комментарий от trashymichael

ДНС тут не при чем. Он резолвит без 'www'. Я имел в виду следующий запрос:

GET.... Host: http://www.example.com ....

Мне интересно, будет ли по стандартам после обрыва со стороны сервера попытка клиента сделать запрос хоста с префиксом WWW

nitroxolyne
() автор топика

В общем, вижу, что вместо того, чтобы надеяться на одинаковое поведение браузеров, лучше вместо обрыва отвечать, что ничего не найдено

nitroxolyne
() автор топика
Ответ на: комментарий от ilovewindows

)))) не соглашусь, встречаются «сайты», которые с/без 'www' не работают. Похоже, что вэбсервера недонастроены

nitroxolyne
() автор топика

И посоветуйте пожалуйста правильный ответ сервера о том, что ничего не найдено. Нужно, чтобы при этом ответе можно было устанавливать cookies

nitroxolyne
() автор топика
Ответ на: комментарий от nitroxolyne

B интернете все что угодно можно встретить, встречаются сайты которые не работают и c www и без www, ибо всем по фиг.

ilovewindows ★★★★★
()
Ответ на: комментарий от true_admin

Вообще, вместо polling можно использовать какие-нить web-sockets или что щас модно. Чтобы по-напрасну не дёргать сервер когда ничего нового нет.

Модные вебсокеты имеют ряд проблем с проксями, которые безжалостно рубят эти коннекты :)

Лучше продумать нормальную политику поллинга

boombick ★★★★★
()
Ответ на: комментарий от true_admin

Да как бы вот это «если что» трудно поймать

Я делал проверку, поддерживает ли браузер веб-сокеты? Если да, то юазем их, а если нет, то делаем поллинг. Но вот браузер поддерживает, а тупые древние прокси считают ненормальным, что у них какие-то долгие коннекты, противоречащие stateless-природе http висят.. И рубят их :( Как тут выбор сделать?

В общем, от вебсокетов дальше интранета я пока отказался

boombick ★★★★★
()
Ответ на: комментарий от boombick

Хотя идея с push-уведомлениями в браузер прекрасна :)

boombick ★★★★★
()
Ответ на: комментарий от true_admin

Ну просто закрывают его и все. Коннект (я имею в виду соединение клиента с http-сервером) не всегда идет напрямую от сервера к клиенту, иногда он проходит через некое количество прокси. И вот некоторые прокси отказываются держать такие соединения, считая, что это от лукавого

Погугли websockets proxy problem

boombick ★★★★★
()

закрытие соединения вместо отдачи ответа, сократит нагрузку на 0.000001%

оно того не стоит

redixin ★★★★
()
Ответ на: комментарий от true_admin

А смысл? Веб-сокеты тем и хороши, что не надо коннект пересоздавать :) А если мы постоянно будем реконнектиться, то чем это лучше поллинга?

boombick ★★★★★
()
Ответ на: комментарий от nitroxolyne

встречаются «сайты», которые с/без 'www' не работают

И очень часто. И нередко весьма солидных компаний или организаций :)

KRoN73 ★★★★★
()
Ответ на: комментарий от true_admin

Ну так все и делают :) Я предпочитаю пока везде использовать поллинг и спокойно подождать, пока вебсокеты будут адекватно работать везде

boombick ★★★★★
()
Ответ на: комментарий от xtraeft

«В Web-е есть специфика обозначения доменного имени в URL адреса сайта — доменное имя может быть с WWW или без WWW. Для того, чтобы успешно можно было раскрутить свой сайт, очень важно будет склеить два зеркала вашего сайта с WWW или без WWW через 301 редирект. Зачастую, склейку зеркал за вас может выполнить хостер, но это обязательно нужно будет проверить.

Т.е. для поисковиков сайты с WWW или без WWW являются абсолютно разными и без их склейки, ссылочная масса будет делиться между ними в неизвестной вам пропорции. WWW в URL адресе по своей сути — это некий атавизм, который делает ваше доменное имя второго уровня доменом третьего.»


ps.За что купил, за то продал.

ilovewindows ★★★★★
()

Не будут ли выполняться последующие попытки соединения?

Safari проверит www. и вроде бы https: варианты. А так - учи 404 и 304, оба для нужных случаев.

alexmaru
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.