Что делать с отправкой лишних запросов chrome? - PullRequest
35 голосов
/ 16 декабря 2010

Google Chrome отправляет несколько запросов на выборку страницы, и это, по-видимому, не ошибка, а особенность.И нам, как разработчикам, просто приходится иметь дело с этим.

Насколько я мог откопать за пять минут, Chrome делает это только для того, чтобы ускорить серфинг, поэтому, если одно соединение потеряно, второе заменит.

Полагаю, если веб-сайт хорошо разработан, его функциональность не нарушится, потому что несколько запросов просто не новы.

Но я просто не уверен, что у меня естьучитывает все ситуации, которые может создавать эта функция.

Будут ли особые ситуации?Есть ли какие-либо рекомендации по их решению?

Обновление 1: теперь я понимаю, почему страница моего банка выдает ошибку при открытии страницы с помощью Chrome!Там написано: «Только одно окно браузера должно быть открыто».Это их решение угроз безопасности? !!

Ответы [ 13 ]

15 голосов
/ 16 декабря 2010

Лучше всего следовать стандартным рекомендациям по веб-разработке: не изменяйте состояние приложения в результате вызова GET.

Если вы беспокоитесь, я рекомендую обновить ваши модульные тесты уровня данных для GETвызовы должны быть продублированы и гарантировать, что они возвращают одни и те же данные.

(кстати, я не вижу такого поведения в Chrome 8.0.552.224, это очень новое?)

14 голосов
/ 09 октября 2012

Я видел подчиненное поведение при написании серверного приложения и обнаружил, что более ранние ответы, вероятно, не соответствуют действительности.

Chrome распределяет один запрос по нескольким http для параллельного извлечения ресурсов. В данном случае это изображение, которое он получает как отдельный http get.

Я прикрепил снимок экрана захвата пакета через wireshark.

Это простой запрос на получение порта 8080, для которого сервер возвращает приветственное сообщение.

Chrome отправляет второй запрос на получение получения избранного значка, который вы видите в верхней части каждой открытой вкладки . Это НЕ секунда, чтобы удовлетворить тайм-аут или любую другую вещь.

Это следует считать еще одним элементом, который отличается в разных браузерах. Тем не менее, параллельное выполнение нескольких запросов http - это стандартная вещь в браузерах с 2018 года.

Вот контрольный вопрос, который я нашел последним

Chrome отправляет два запроса SO

chrome requests favorite icon

Проблема с Chrome в коде Google

4 голосов
/ 13 апреля 2016

Наблюдение за этой характеристикой (ошибка / функция / что-либо еще) происходит, когда я набираю URL, и автозаполнение попадает в соответствие, все еще печатая в URL. Chrome берет это совпадение и извлекает страницу, я полагаю, из-за преимуществ кэширования, которые могут возникнуть при загрузке страницы самостоятельно ...

3 голосов
/ 02 апреля 2015

Это также может быть вызвано тегами link с пустыми атрибутами href, по крайней мере, в Chromium (v41).Например, каждая следующая строка будет генерировать дополнительный запрос на странице:

<link rel="shortcut icon" href="" />
<link rel="icon" type="image/x-icon" href="" />
<link rel="icon" type="image/png" href="" />

Это показывает, что поиск пустых атрибутов на странице является хорошей отправной точкой, либо href, либо src.

3 голосов
/ 24 марта 2015

Такое поведение может быть вызвано SRC = '' или SRC = '#' в IMG или (как в моем случае) тегом IFRAME.Замена '#' на 'about: blank' устранила проблему.

Здесь http://forums.mozillazine.org/viewtopic.php?f=7&t=1816755 они говорят, что теги SCRIPT также могут быть проблемой.

2 голосов
/ 19 февраля 2012

Это происходит только тогда, когда я включаю расширение "webug" (которое заменяет Chrome в FirePHP). Если я отключу расширение, сервер получит только один запрос.

2 голосов
/ 17 декабря 2011

Я только что реализовал одноразовый токен Guid (asp.net/TSQL), который генерируется, когда генерируется первая форма в серии из двух (+ страница подтверждения). Токен записывается как «ожидающий» в БД при его создании. Маркер Guid сопровождает сообщения как скрытое поле и, наконец, помечается как закрытый, когда пользовательская операция завершена (оплата). Этот механизм работает и предотвращает повторную отправку любых форм после оплаты. Однако я вижу 2 или 3 (!?) Дополнительных токена, сгенерированных дополнительными запросами быстро один за другим. Первый запрос - это то, что заканчивается перед пользователем (localhost - то есть, я), где сгенерированный контент заканчивается для двух других запросов, о которых я понятия не имею. Сначала я задавался вопросом, почему обработчики Page_Load запускают несколько раз для показа одной страницы, поэтому я попытался установить флаг в Http.Context.Current - но, к моему ужасу, обнаружил, что последующие запросы приходят по тому же URL-адресу, но без данных публикации, и пустые Http.Context.Current массивы - т. е. полностью (для практических целей) отдельные запросы HTTP. Как справиться с этим? Какой-то токен и логика для отклонения последующих запросов содержимого тела страницы, пока первый еще обрабатывается? Я предполагаю, что это могло бы иметь место как глобальный контекст?

1 голос
/ 30 ноября 2018

Я просто хочу обновить на этом. Я столкнулся с той же проблемой, но в стиле CSS.

Я посмотрел все теги src, href, script, и ни у одного из них не было пустой строки. Оскорбительная запись была такой:

<div class="Picture" style="background-image: url('');">&nbsp;</div>

Убедитесь, что вы также проверили свои стили для пустой строки URL

1 голос
/ 19 апреля 2018

В моем случае, это был Chrome (v65), делающий секунду GET /favicon.ico, хотя ответ был text/plain, таким образом, явно нет <link там, ссылаясь на значок.Это перестало делать это после того, как я ответил 404.

Firefox (v59) отправлял 2 запроса на favicon;опять перестал делать это после 404.

1 голос
/ 18 августа 2012

У меня была эта проблема, но ни одно из решений здесь не было проблемой.Для меня это было вызвано расширением APNG в Chrome (поддержка анимированных PNG).После того как я отключил это расширение, я больше не видел двойных запросов изображений в браузере.Я должен отметить, что независимо от того, выводила ли страница изображение PNG, отключение этого расширения решало проблему (т. Е. APNG, кажется, вызывает проблему для изображений независимо от типа изображения, они не обязательно должны быть PNG).

У меня также было много других расширений (таких как «Веб-разработчик», о которых многие говорили, что это проблема), но они не были проблемой.Отключение их не решило проблему.Я также работаю в режиме разработчика, и для меня это ничего не изменило.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...