Как мне принудительно обновить фавикон? - PullRequest
1469 голосов
/ 05 февраля 2010

У меня есть приложение Grails, работающее локально с использованием собственного tomcat, и я только что изменил значок на новый.Проблема в том, что я не вижу его ни в одном браузере.Появляется старый значок, или я вообще не получаю значок, но не мой новый.Я не думаю, что это проблема Грааля как таковая, скорее проблема с иконками.

Что должно случиться с иконками?Как они должны работать?У меня есть многочисленные закладки в моем браузере, которые имеют неправильные значки, и они никогда не обновляются.Как заставить сервер / браузер перестать их кэшировать?Кажется довольно глупым всегда кэшировать их, учитывая, что они обычно только 16x16.Почему бы просто не загружать их при каждом посещении страницы?Это не совсем огромные накладные расходы.

Ответы [ 31 ]

9 голосов
/ 05 февраля 2010

Скорее всего, проблема с веб-браузером. Вам придется удалить кеш из браузера, закрыть браузер и снова открыть его. Это должно это исправить.

Я не верю, что ваши избранные будут обновляться в ваших избранных, пока вы не вернетесь на эту страницу, и при условии, что вы ранее очистили кеш браузера.

Ваш веб-браузер не будет выходить в Интернет для самостоятельного поиска нового значка ... слава богу.

9 голосов
/ 25 ноября 2012

Для Internet Explorer есть другое решение:

  1. Открыть Internet Explorer.
  2. Нажмите меню> инструменты> настройки интернета.
  3. Нажмите «Общие»> «Временные интернет-файлы»> «Настройки».
  4. Нажмите кнопку «Просмотр файлов».
  5. Найдите свой старый файл favicon.ico и удалите его.
  6. Перезапустить браузер (Internet Explorer).
8 голосов
/ 30 января 2017

Для Chrome на macOS, если вы не хотите удалять всю базу данных избранного Chrome, как это уже предлагалось, вы можете удалить только конфликтующие значки:

  1. Выход из Chrome
  2. Загрузить базу данных favicons (используя sqlite здесь):

sqlite3 ~/Library/Application\ Support/Google/Chrome/Default/Favicons

  1. Поиск файла, вызывающего проблемы

select * from favicons where url = 'http://mysite.dev/favicon.ico';

  1. Если вы довольны выводом:

delete from favicons where url = 'http://mysite.dev/favicon.ico';


В качестве альтернативы , вы можете искать шаблон, который вы можете использовать для удаления нескольких записей:


  1. Поиск нескольких файлов , вызывающих проблемы

select * from favicons where url like 'http://mysite.dev%';

  1. И снова, если вы довольны тем, что это возвращает:

delete from favicons where url like 'http://mysite.dev%';


  1. Введите .exit и нажмите Enter, чтобы выйти из sqlite
  2. Перезапустить Chrome
8 голосов
/ 11 марта 2013

Попробуйте открыть в новой вкладке

Я перепробовал многие из перечисленных выше вещей (сброс кеша, обновление, использование тега ссылки и т. Д.), Я даже проверил свой файл .htaccess и сбросил переменную ExpiresByType.

Но это то, что в итоге сработало для меня как в Chrome (25.0.x), так и в Safari (6.0.1):

  1. Очистка кеша
  2. Жесткое связывание значка с тегом <link>
  3. Навигация до mysite.com/favicon.ico
  4. Открытие mysite.com в новой вкладке

(Вплоть до шага 3 при обновлении на той же вкладке продолжалось воспроизведение старого значка.)

6 голосов
/ 05 февраля 2010

Когда вы запрашиваете значок в 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:» в ответ, клиентские браузеры будут повторно запрашивать значок после этой отметки времени. При активной разработке вы могли бы установить метку времени истечения в секунду или две в будущем и всегда получать ее, хотя это плохой долгосрочный план.

5 голосов
/ 05 июня 2015

Ошибка в значке Chrome: игнорировать этот ответ

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

Оригинальный ответ

Вам не нужно очищать кэш, перезапускать браузер, или переписать свой HTML - вам просто нужно изменить URL иконки, один раз , чтобы браузер забудьте ранее кэшированный значок.

Предполагая, что вы определили свой значок с помощью <link> элементов на странице <head>, вы можете сделать это, запустив в консоли следующую команду: standard-JS one-liner :

[].slice.call(document.querySelectorAll('head>link[rel$="icon"]')).map(function(ln){ln.href+='?v=2'});

Для более продвинутой реализации этого, которая может автоматически сделать это для конечных пользователей в производстве, см. freshicon.js .

4 голосов
/ 27 января 2014

Если вы используете PHP .., вы также можете использовать эту строку.

<link rel="shortcut icon" href="http://www.yoursite.com/favicon.ico?v=<?php echo time() ?>" />

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

4 голосов
/ 30 ноября 2011

Я недавно восстановил свои закладки и искал способ восстановить FavIcons, не посещая каждую страницу. Мой поиск привел меня к этой теме.

Для тех, кто находится в подобных обстоятельствах, просто скачайте дополнение FAVICON RELOADER. После установки вы найдете команду «перезагрузить любимые значки» в выпадающем меню BOOKMARKS.

https://addons.mozilla.org/en-US/firefox/addon/faviconreloader/?src=api

3 голосов
/ 04 апреля 2011

Если вы просто заинтересованы в отладке, чтобы убедиться, что она изменилась, вы можете просто добавить фиктивную запись в ваш файл / etc / hosts и нажать новый URL.Этот значок не будет уже кэширован, и вы можете убедиться, что новый работает.

Если вы не измените имя значка, вы не сможете заставить своих пользователей получить новую копию

3 голосов
/ 01 сентября 2018

Chrome Версия: 68.0.3440.106

Просто перезапустите Chrome (в адресной строке): chrome://restart

...