Используете test.php на своем сайте и Google Chrome?

e9a59b3c038847a3a1cc3ab0e5b8734d.pngПро test.php уже была интересная статься хабре. Но в этом небольшом топике я расскажу об одной особенности Google Chrome, которая может подпортить жизнь владельцам test.php.

Работая с очередным веб-приложением я наткнулся на странный баг: открываешь в Google Chrome скрипт http://example.com/test.php, а он выполняется несколько раз. Причина оказалась в стандартных настройках Google Chrome, а точнее во включенной опции «Предсказывать сетевые действия для ускорения загрузки страниц».Среди прочего, она позволяет хрому заранее загружать и рендерить веб-страницу еще до нажатия Enter в омнибоксе (адресной строке), тем самым создавая видимость мгновенной загрузки. Здесь пишут, что функция работает для часто посещаемых страниц (возможно достаточно хотя бы раз посетить страничку, чтобы она осталась в истории омнибокса), test.php у разработчиков часто подходит под этот критерий :)

Неприятная особенность данной функций заключается в том, что если страница успела загрузиться до нажатия Enter, все работает как следует, и страница отображается мгновенно после ввода. Однако если test.php загружается дольше, чем время между отображением подсказки в омнибоксе и переходом на страницу, после нажатия Enter страница будет загружена повторно.

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

Решение простое: в опциях убрать галочку с «Предсказывать сетевые действия для ускорения загрузки страниц»:

504b7de1712b49b586a66541b5fcd921.png

Возможно, данная проблема есть и у других современных браузеров с «умной» адресной строкой. Также стоит отметить, что у меня предзагрузка не отображалась во вкладке «Network» в «Developer Tools».

© Habrahabr.ru