Неприятные баги MVC c favicon (Оценка: +3)

Печать / RSS-лента
Так как написанные системы по принципу mvc обрабатывают роутинг средствами php обнаружил уже давно такой баг как выполнение 2х запросов к сайту от одного пользователя при каждом обновлении страницы. Заметил это при написании онлайн счетчика который добавлял ip адрес в таблицу, а если он уже существовал то обновлял поле hits которое содержало количество хитов. При втором обновлении наблюдал в базе 3 хита, при третьем обновлении 5 хитов и т.д, значение счетчика хитов постоянно увеличивалось на 2. После тестов с логами, оказалось это из-за несуществующей иконки favicon в шапке.
В htaccess мы используем RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
таким образом, что первое есть в url он проверяет как файл или дирикторию, если не найдены, отправляет url запрос в index.php. При несуществующей favicon.ico создается второй запрос к сайту, вот собственно и причина двух запрос. Такая же ситуация возникнет при любой несуществующей картинки которая объявлена в разметке. Сегодня я снова столкнулся с этой проблемой и решил все же написать статью об этом. В этот раз заметил этот баг уже при отсутствии favicon на страницы, все так же выполнялось по два запроса к сайту при одном обновлении страницы, снова посмотрел лог и увидел запрос /favicon.ico, но она не была объявлена в шапке, после чего я ее объявил и все стало нормально работать. Как я понял chrome запрашивает иконку страницы по умолчанию site.ru/favicon.ico если она не была объявлена в head, может так делают и другие браузеры, не проверял.

Почему это плохо?
Сбой сессионных данных, два потока от одного пользователя. Если на сайт зайдет 100 человек, то выполнится не 100 запросов,а 200, а так же при серфе все это еще будет умножатся, это еще и лишние ресурсы сервера.

Вывод
Не оставляйте сайт без favicon иконки, вроде мелочь, а последствия серьезные
В некоторых случаях необходимые подгружаемые изображения могут не оказаться на сервере, поэтому стоит проверять функцией на существования, повторюсь в некоторых случаях, не призываю вас этого делать.
Автор статьи: orel (17.05.13 / 22:03)
php, два соединения, запроса, favicon, mvc
Рейтинг: +3
Просмотров: 1074
Комментарии (5) »