Как мне принудительно обновить фавикон?
У меня есть приложение Grails, работающее локально с использованием собственного tomcat, и я только что изменил значок на новый. Проблема в том, что я не вижу его ни в одном браузере. Старый фавикон появляется или я не получаю фавикон вообще, но не мой новый. Я не думаю, что это проблема Grails как таковая, скорее проблема с иконками.
Что должно случиться с фавиконами? Как они должны работать? У меня есть многочисленные закладки в моем браузере, которые имеют неправильные значки, и они никогда не обновляются. Как заставить сервер / браузер перестать их кэшировать? Кажется довольно глупым всегда кэшировать их, учитывая, что они обычно только 16x16. Почему бы просто не загружать их при каждом посещении страницы? Это не совсем огромные накладные расходы.
34 ответа
Чтобы обновить значок вашего сайта, вы можете заставить браузеры загружать новую версию, используя тег ссылки и строку запроса в вашем имени файла. Это особенно полезно в производственных средах, чтобы пользователи могли получать обновления.
<link rel="icon" href="http://www.yoursite.com/favicon.ico?v=2" />
Хорошо, после 10 минут работы, простой способ исправить это - это почти что у lineofbirds
- Введите www.yoursite.com/favicon.ico (или www.yoursite.com/apple-touch-icon.png и т. Д.)
- Нажмите ввод
- Ctrl+F5
- Перезапустите браузер (IE, Firefox)
Этот ответ еще не был дан, поэтому я решил опубликовать его. Я просмотрел всю сеть и не нашел хорошего ответа для тестирования значков в локальной разработке.
В текущей версии Chrome (для OSX), если вы сделаете следующее, вы получите мгновенное обновление иконки:
- Наведите курсор на вкладку
- Правый клик
- Выберите перезагрузить
- Ваш favicon должен быть обновлен
Это самый простой способ, который я нашел, чтобы обновить значок локально.
Уничтожив файл, используемый вашим браузером для хранения старых значков, вы можете принудительно загрузить новые.
- Закройте браузер. Убедитесь, что больше не запущены процессы браузера (например, проверьте диспетчер задач для
chrome.exe
или жеfirefox.exe
). - Перейдите туда, где ваш браузер хранит пользовательские файлы:
- Для Chrome перейдите в каталог данных Chrome.
- Для Firefox перейдите в папку профиля Firefox.
- Удалить кеш фавикона.
- Для Chrome удалите
Favicons
а такжеFavicons-journal
- Для Firefox удалите
favicons.sqlite
- Для Chrome удалите
Это почти наверняка сработает. Если не:
- Возможность 1: обновление вашего браузера изменило работу кеша favicon. Пожалуйста, отредактируйте этот ответ с новыми инструкциями.
- Возможность 2: Ваша проблема с favicon не имеет ничего общего со сверхагрессивным кэшированием. Вместо этого может возникнуть проблема с загрузкой ресурсов - с помощью Инструментов разработчика убедитесь, что новый значок загружается правильно.
Переименуйте файл favicon и добавьте HTML-заголовок с новым именем, например:
<link rel="SHORTCUT ICON" href="http://www.yoursite.com/favicon2.ico" />
Если вы используете PHP, вы также можете использовать MD5-Hash favicon в качестве строки запроса:
<link rel="shortcut icon" href="favicon.ico?v=<?php echo md5_file('favicon.ico') ?>" />
Таким образом, Favicon всегда будет обновляться после его изменения.
Как указано в комментариях, вы также можете использовать дату последнего изменения вместо MD5-Hash, чтобы добиться того же самого и немного сэкономить на производительности сервера:
<link rel="shortcut icon" href="favicon.ico?v=<?php echo filemtime('favicon.ico') ?>" />
В Chrome на Mac OS X можно удалить файл с кешем favicon
${user.home}/Library/Application Support/Google/Chrome/Default/Favicons
В зависимости от браузера они обрабатываются по-разному, но обычно я обнаруживаю, что иду на страницу сайта по умолчанию и выполняю жесткое обновление. CTRL + F5, как правило, обновляет его.
ON MAC:⌘ + Shift-R или удерживайте нажатой клавишу Ctrl и нажмите кнопку перезагрузки в браузере.
Ну, накладные расходы накладные расходы, но да, не слишком большие.
Кроме того, браузеры иногда "жадны" по поводу кэшированных файлов. Вы можете очистить кеш и / или перезапустить браузер и увидеть изменения. Если это не удается, хотя...
Мое дешевое решение состоит в том, чтобы:
- Посетите ваш файл по адресу http://example.com/favicon.ico в вашем браузере.
- Удалите favicon.ico из своего веб-корня.
- Посетите http://example.com/favicon.ico раз в браузере и убедитесь, что он отсутствует.
- Загрузите новый в свой webroot.
- Посетите http://example.com/favicon.ico раз в браузере, убедитесь, что он новый.
Если эта последовательность не работает, то происходит что-то еще.
Для Internet Explorer есть другое решение:
- Откройте интернет проводник.
- Нажмите меню> инструменты> настройки интернета.
- Нажмите общие> временные интернет-файлы> кнопку "настройки".
- Нажмите кнопку "Просмотр файлов".
- Найдите свой старый файл favicon.ico и удалите его.
- Перезапустите браузер (Internet Explorer).
Более чем вероятно, проблема веб-браузера. Вам придется удалить кеш из браузера, закрыть браузер и снова открыть его. Это должно исправить это.
Я не верю, что ваши избранные обновятся в ваших избранных, пока вы не вернетесь на эту страницу, и при условии, что вы ранее очистили кеш браузера.
Ваш веб-браузер не будет выходить в Интернет, чтобы самостоятельно проверить новый значок... Слава Богу.
Попробуйте открыть в новой вкладке
Я перепробовал многие вещи выше (сброс кеша, обновление, использование тега ссылки и т. Д.), Я даже проверил свой .htaccess
файл и сбросить переменную ExpiresByType.
Но это то, что в итоге сработало для меня как в Chrome (25.0.x), так и в Safari (6.0.1):
- Очистка кеша
- Жесткая связь фавикон с
<link>
тег - Навигация к
mysite.com/favicon.ico
- открытие
mysite.com
в новой вкладке
(Вплоть до шага 3 при обновлении на той же вкладке продолжалось воспроизведение старого значка.)
Версия Chrome: 68.0.3440.106
Просто перезапустите Chrome (в адресной строке):chrome://restart
Для Chrome на macOS, если вы не хотите удалять всю базу данных избранного Chrome, как уже предлагалось здесь, вы можете удалить только конфликтующие значки:
- Выйти из Chrome
- Загрузите базу данных favicons (используя sqlite здесь):
sqlite3 ~/Library/Application\ Support/Google/Chrome/Default/Favicons
- Поиск файла, который вызывает проблемы
select * from favicons where url = 'http://mysite.dev/favicon.ico';
- Если вы довольны результатом:
delete from favicons where url = 'http://mysite.dev/favicon.ico';
Кроме того, вы можете искать шаблон, который вы можете использовать для удаления нескольких записей:
- Поиск нескольких файлов, которые вызывают проблемы
select * from favicons where url like 'http://mysite.dev%';
- И снова, если вы довольны тем, что это возвращает:
delete from favicons where url like 'http://mysite.dev%';
- Тип
.exit
и нажмите вернуться, чтобы выйти из sqlite - Перезапустите Chrome
Поддержка favicon в Chrome содержит ошибки - не обращайте внимания на этот ответ
Я написал этот ответ под впечатлением, что это то, что нужно для обновления значков в Google Chrome. Однако оказывается, что это работает только в течение первых пяти минут или около того, пока значок не будет безвозвратно утерян в синхронизации истории Chrome.
Оригинальный ответ
Вам не нужно очищать кэш, перезагружать браузер или переписывать HTML - вам просто нужно один раз изменить URL-адрес значка, чтобы браузер забыл ранее кэшированный значок.
Предполагая, что вы определили свою иконку через <link>
элементы в вашей странице <head>
, вы можете сделать это, запустив эту стандартную JS-строку в консоли:
[].slice.call(document.querySelectorAll('head>link[rel$="icon"]')).map(function(ln){ln.href+='?v=2'});
Для более продвинутой реализации этого, которая может автоматически сделать это для конечных пользователей в производстве, см. Freshicon.js.
Когда вы запрашиваете значок в Google, вы можете посмотреть заголовки ответа.
Last-Modified: Fri, 09 Jan 2009 16:35:02 GMT
Date: Thu, 01 Dec 2010 00:00:01 GMT
Expires: Fri, 01 Dec 2011 00:00:01 GMT
Cache-Control: public, max-age=31536000
Age: 7
Если вы добавите заголовок "Expires: " в ответ, клиентские браузеры повторно запросят значок после этой отметки времени. При активной разработке вы могли бы установить метку времени истечения в секунду или две в будущем и всегда получать ее, хотя это плохой долгосрочный план.
Я недавно восстановил свои закладки и искал способ восстановить FavIcons, не посещая каждую страницу. Мой поиск привел меня к этой теме.
Для тех, кто находится в подобных обстоятельствах, просто скачайте дополнение FAVICON RELOADER. После установки вы найдете команду "перезагрузить любимые значки" в выпадающем меню BOOKMARKS.
https://addons.mozilla.org/en-US/firefox/addon/faviconreloader/?src=api
Если вы используете PHP .., вы также можете использовать эту строку.
<link rel="shortcut icon" href="http://www.yoursite.com/favicon.ico?v=<?php echo time() ?>" />
Это обновит ваш значок на каждой странице загрузки.
Если вы просто заинтересованы в его отладке, чтобы убедиться, что он изменился, вы можете просто добавить фиктивную запись в ваш файл /etc/hosts и нажать новый URL. Этот favicon не будет уже кэширован, и вы можете убедиться, что новый работает.
Если вы не поменяете название иконки, вы не сможете заставить своих пользователей получить новую копию
Это обходной путь для ошибки Chrome: измените атрибут rel на таблицу стилей! Сохраните оригинальную ссылку, хотя. Работает как шарм:
Я нашел этот обходной путь, потому что у нас также есть требование обновлять сайты / производственный код клиента, и я не нашел других решений для работы.
Это работает для Chrome:
на Mac: удалить файл
${user.home}/ Библиотека / Поддержка приложений /Google/Chrome/ По умолчанию /Favicons
в Windows: удалить файлы
C:\Users[имя пользователя]\AppData\Local\Google\Chrome\ Данные пользователя \Default\Favicons C:\Users[имя пользователя]\AppData\Local\Google\Chrome\User Data\Default\Favicons-journal
Также убедитесь, что вы указали полный URL-адрес изображения, а не только его относительный путь:
http://www.example.com/images/favicon.ico
И не:
images/favicon.ico
Закройте все окна Google Chrome
Добавление еще одного ответа, которого я здесь не вижу. Я попытался очистить кеш Google Chrome, перезагрузить вкладку, обновить вкладку, открыть новую вкладку и даже открыть новое окно. У меня ничего не получалось. Что, наконец, сработало для меня, так это закрыть все окна Google Chrome (если вы похожи на меня, у вас, вероятно, есть 3+ окна с кучей вкладок и, возможно, даже больше окон / вкладок на другом рабочем столе, не забывайте эти !). Как только все ваши окна будут закрыты, попробуйте открыть новое новое окно и перезагрузить свой сайт.
Надеюсь, это поможет кому-то!
Дополнительный совет: если вы хотите вернуть все свои окна, вы можете нажать «Ctrl + Shift + стрелка вверх + T», чтобы вернуть окна и вкладки.
Я знаю, что это действительно старый вопрос, но он также остается актуальным, хотя в наши дни это касается только Mozilla. (Я понятия не имею, что делает проводник, потому что мы не пишем код для нестандартных браузеров).
Chrome хорошо себя ведет, если в заголовке есть значок.
Хотя Mozilla хорошо знает об этой проблеме, как обычно, они никогда не исправляют раздражающие мелочи. Даже через 6 лет.
Итак, есть два способа принудительного обновления иконки с помощью Firefox.
Попросите всех ваших клиентов удалить Firefox. Затем переустановите.
Вручную введите только домен в строке URL - не используйте http или www только домен (mydomain.com).
Это предполагает, конечно, что ваши записи ns включают разрешение только для доменного имени.
Просто,
1: я не хочу возиться с кодами (ps мой конструктор сайтов не использует коды, он использует кнопку "загрузить файл" и делает это сам)
2: я попробовал CTRL+F5, и он не работает для меня так....
У меня есть решение:
IE: Очистить всю историю браузера и куки, перейдя в настройки cog O
Chrome: перейдите в меню в правом верхнем углу под буквой X, которое выглядит как =, затем перейдите к настройкам, истории, ОЧИСТИТЕ ПРОСМОТР ДАННЫХ и отметьте все соответствующие поля (я сделал историю, куки-файлы и очистил катч от начало времени)
Вот как мне это удалось с помощью простого анимированного значка и FireFox 3.6.13 (бета-версия). Вероятно, он будет работать и для других версий FireFox, дайте мне знать, если это не так. Это в основном решение artlung, но также и для файла.gif:
- Я открыл программу FTP, скачал мои файлы favicon.ico и favicon.gif,
- затем удалил их из файлов моего сервера.
- Затем я открыл их в своем браузере, как предложил artlung: http://mysite.com/favicon.ico AND http://mysite.com/favicon.gif После загрузки этих адресов и отображения 404 страниц с ошибками ("страница не найдена")
- Я ТОГДА загрузил оба файла обратно на мой сервер, и PRESTO - правильные значки были немедленно отображены.
Если проблема не исчезла, несмотря на предпринятые выше шаги, попробуйте перезапустить IIS Server. Надеюсь это поможет...
Использование «Очистить кеши» из меню «Разработка» — единственное, что мне помогло в Safari 17.