У меня нет favicon.ico, но IE всегда делает запрос на него.
Можно ли запретить браузеру отправлять запрос на избрание с моего сайта? Может быть, есть мета-тег в заголовке HTML?
У меня нет favicon.ico, но IE всегда делает запрос на него.
Можно ли запретить браузеру отправлять запрос на избрание с моего сайта? Может быть, есть мета-тег в заголовке HTML?
Ответы:
Сначала я скажу, что наличие значка на веб-странице - это хорошо (обычно).
Однако это не всегда желательно, и иногда разработчикам нужен способ избежать дополнительной нагрузки. Например, IFRAME запрашивает значок, не показывая его. Хуже всего то, что в Chrome и Android IFRAME сгенерирует 3 запроса на значки:
"GET /favicon.ico HTTP/1.1" 404 183
"GET /apple-touch-icon-precomposed.png HTTP/1.1" 404 197
"GET /apple-touch-icon.png HTTP/1.1" 404 189
Следующее использует URI данных и может использоваться, чтобы избежать ложных запросов favicon:
<link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon">
Для ссылок смотрите здесь:
Ошибка / поведение Chrome, вероятно, будет исправлена в следующих версиях.
Вот сообщение об ошибке для голосования:
ОБНОВЛЕНИЕ 1:
Из комментариев (jpic) похоже, что Firefox> = 25 больше не нравится приведенный выше синтаксис. Я протестировал на Firefox 27, и он не работает, пока он работает на Webkit / Chrome.
Итак, вот новый, который должен охватывать все последние браузеры. Я тестировал Safari, Chrome и Firefox:
<link rel="icon" href="data:;base64,=">
Я исключил имя «ярлыка» из значения атрибута «rel», так как это только для более старых версий IE, а версии IE <8 также не любят dataURI. Не проверено на IE8.
ОБНОВЛЕНИЕ 2:
Если вам нужен документ для проверки на соответствие HTML5, используйте вместо этого:
<link rel="icon" href="data:;base64,iVBORw0KGgo=">
<link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=">
похоже, решило проблему.
data:image/png;base64,iVBORw0KGgo=
в браузере, сохранить как favicon.ico
aka. пустой файл PNG и сохранить его в корне сайта. Правильно?
Просто добавьте следующую строку в <head>
раздел вашего HTML-файла:
<link rel="icon" href="data:,">
Особенности этого решения:
href="#"
)reserves space
?
Я верю, что видел это (Я не проверял это или использовал это лично хотя):
<link rel="shortcut icon" href="#" />
У кого-нибудь был подобный опыт?
РЕДАКТИРОВАТЬ:
Я только что протестировал приведенный выше фрагмент и при принудительном полном обновлении в Fiddler не было замечено ни одного запроса favicon. Я протестировал против IE8 (режим Compat как стандарты IE7) и FF 3.6.
href
ссылка на какой-то статический (кэшированный) ресурс, который вы уже загрузили (например, файл CSS или файл сценария) - чтобы гарантировать, что динамическая (не кэшированная) страница не будет запрошена дважды. (Просто чтобы быть в безопасности, так как href="#"
технически указывает на текущую веб-страницу).
Ты не можешь Все, что вы можете сделать, это сделать этот образ как можно меньшего размера и установить некоторые заголовки аннулирования кэша ( Expires
, Cache-Control
) в будущем. Вот что Yahoo! должен сказать о запросах favicon.ico.
Вы можете использовать .htaccess или серверные директивы, чтобы запретить доступ к favicon.ico, но сервер отправит ответ об отказе в доступе в браузер, и это все равно замедлит доступ к странице.
Вы можете остановить браузер, запрашивающий favicon.ico, когда пользователь возвращается на ваш сайт, оставив его в кэше браузера.
Во-первых, предоставьте небольшое изображение favicon.ico, которое может быть пустым, но настолько маленьким, насколько это возможно. Я сделал черно-белый под 200 байтов. Затем, используя директивы .htaccess или server, установите заголовок файла Expires на месяц или два в будущем. Когда тот же пользователь возвращается на ваш сайт, он будет загружен из кэша браузера, и на ваш сайт не будет отправлено ни одного запроса. Не более 404 в журналах сервера тоже.
Если у вас есть контроль над полным сервером Apache или, возможно, виртуальным сервером, вы можете сделать это: -
Если корневым документом сервера является скажем / var / www / html, добавьте это в /etc/httpd/conf/httpd.conf:-
Alias /favicon.ico "/var/www/html/favicon.ico"
<Directory "/var/www/html">
<Files favicon.ico>
ExpiresActive On
ExpiresDefault "access plus 1 month"
</Files>
</Directory>
Тогда один файл favicon.ico будет работать для всех виртуальных хостинговых сайтов, поскольку вы используете его для псевдонимов. Он будет извлечен из кеша браузера через месяц после посещения пользователями.
Для .htaccess это работает (не проверено мной): -
AddType image/x-icon .ico
ExpiresActive On
ExpiresByType image/x-icon "access plus 1 month"
Очень простое решение - поместить код ниже в ваш .htaccess
. У меня была такая же проблема, и это решило мою проблему.
<IfModule mod_alias.c>
RedirectMatch 403 favicon.ico
</IfModule>
Ссылка: http://perishablepress.com/block-favicon-url-404-requests/
По нашему опыту, когда Apache переключился на запрос favicon.ico, мы закомментировали дополнительные заголовки в файле .htaccess.
Например, у нас был установлен заголовок X-XSS-Protection "1; mode = block"
... но мы забыли заранее использовать заголовки a2enmod. Комментирование отправляемых дополнительных заголовков решило проблему favicon.ico.
У нас также было несколько виртуальных хостов, настроенных для разработки, и произошел сбой только с 500 Internal Server Error при использовании http: // localhost и получении /favicon.ico. Если вы запустите «curl -v http: //localhost/favicon.ico » и получите предупреждение о том, что имя хоста отсутствует в кэше преобразователя или что-то в этом роде, у вас могут возникнуть проблемы.
Это может быть так же просто, как не получить (мы попробовали это, и это не сработало, потому что наша основная причина была другой), или поискать директивы в apache2.conf или .htaccess, которые могут вызывать странные сообщения 500 Internal Server Error.
Мы обнаружили, что он потерпел неудачу так быстро, что в журналах ошибок Apache не было ничего полезного, и потратил целое утро на то, чтобы менять мелкие детали тут и там, пока мы не решили проблему установки дополнительных заголовков, когда забыли загрузить mod_headers!
Иногда эта ошибка возникает, когда в HTML есть какой-то закомментированный код, а браузер пытается что-то найти. Как и в моем случае, я прокомментировал код для веб-формы в фляге, и я получил это.
Потратив 2 часа, я починил это следующими способами:
1) Я создал новую среду Python, а затем он выдал ошибку в закомментированной строке HTML, до этого мне выдавалась только ошибка 'GET /favicon.ico HTTP / 1.1 "404'
2) Иногда, когда у меня был дублированный код, такой как файл python, существующий с таким же именем, я также видел эту ошибку, попробуйте удалить их тоже
Вы могли бы использовать
<link rel="shortcut icon" href="http://localhost/" />
Таким образом, он фактически не будет запрашиваться с сервера.