От чего происходят задержки при обращении по прямому ip из браузера?
Здравствуйте.
Возможно мой вопрос очень глупый, и скорее всего проблема в том, что я не могу правильно его сформулировать и привязать к какой-либо определенной области, чтобы загуглить.
Суть в том, что когда в браузере подключается iframe, источник которого не домен, а ip, или когда например происходит ajax запрос также к ip адресу, а не к домену, то периодически появляется какая-то задержка (определяющаяся в браузере как Waiting [TTFB]). Если сразу после ответа, я делаю запрос к этому же ip, то все происходит без задержек, но после того, как я какой-то промежуток времени жду (например час), то первый запрос так же происходит с задержкой.
В случае с iframe не знаю, но ajax запрос происходит к nginx серверу. Причем как мне показалось, nginx сразу пишет в логах, что запрос выполнен, а браузер еще какое-то время ждет непонятно чего.
По сути это не то, чтобы проблема, так как понятное дело, что подключаешь домен и все решено. Но мне очень интересно разобраться с чем связаны такие задержки. Может хоть научусь чему то :)
UPD. Также добавлю, что очень маловероятно, что дело связано с работой кода, так как это первое о чем я подумал и поставив логирование времени выполнения запроса в nginx, которое по идее замеряет время от самого начала до самого конца (и включает в себя как работу интерпретатора, так и всего остального). И вот в логах nginx эти медленные запросы пишутся как выполненные быстро.
В общем пока еще до конца не разобрался, но это точно проблема моего компьютера (даже не сети). И на 90% это проблема в антивирусе касперского, который вероятно к ip адресам относится более трепетно и дольше их проверяет. Если смогу точно определить источник проблемы, то обновлю ответ.
Я сам первым делом само собой подумал на ресурсы сервера, но по серверу nginx пишет, что запрос выполняется моментально, а, если я правильно понимаю, время в nginx включает в себя все. То есть и работу интрепретатора и всего остального.
В вашем случае задержка скорее всего на стороне сервера и связана с кешированием информации или завершением рабочих процессов интерпретатора и созданием нового при очередном запросе, если соединение по https, то возможны некоторые задержки на проверку сертификата.
Обращение по имени домена вместо IP ничего не изменит, лишь добавит задержку на резолвинг имени в адрес.
Как это ничего не изменит, если я написал, что всего лишь поменяв ip на домен задержка пропала :) Плюс nginx насколько я понимаю в логах замеряет время от самого начала до самого конца. И вот на запросах с задежкой это время было минимальным (доли секунды). То есть задержка появлялась до nginx или после него. У меня уже большие подозрения начинают падать на настройки сети на моем компьютере (возможно фаервол антивирусный) или на провайдера
Николай: Я могу ошибаться, но лично я не вижу причин для ускорения при обращении по имени всесто IP. Как происходит обращение по имени - ваш компьютер делает запрос к DNS (если в кеше нет данных), определяет IP, далее соединяется с удаленным сервером по IP. Если только на удаленном сервере какие-то хитрые конфиги, где отдельно описан server_name IP; и sevrer_name domain.ru; и для первого случая отдельные правила, приводящие к задержке.
Алексей: Поэтому я и создал этот вопрос :) Потому что я также думаю, что это совершенно нелогично. Но конфиги очень простые, и заменил я в них только server_name. Просто мне показалось, что раз все так нелогично для меня, значит возможно я что-то упускаю, какие нибудь основы работы сети. Но как становится понятно по ответам у меня происходит действительно что-то странное :)