Как браузеры кешируют favicon
Браузеры кешируют favicon агрессивно и хранят их отдельно от собственного кеша страницы, часто удерживая иконку днями независимо от обычной перезагрузки. Именно поэтому изменённый favicon так часто продолжает показывать старое изображение. Надёжный способ заставить его обновиться — изменить URL иконки (обычно строкой версии в запросе, например /favicon.ico?v=2) и сделать жёсткую перезагрузку.
Почему favicon такие «липкие»
К favicon особое отношение. Браузеры хранят их в хранилище, отдельном от обычного HTTP-кеша, удерживают их с большим сроком жизни и не обязательно сбрасывают при обычной перезагрузке. Некоторые ведут базу favicon на уровне профиля, переживающую сессии. CDN перед вашим сайтом добавляет второй кеш поверх.
Итог в том, что правка файла иконки на месте часто невидима: у браузера уже есть иконка для этого URL, и он не видит причин спрашивать снова. Ключ — это URL, так что решение — изменить URL, а не только байты за ним.
Заставить favicon обновиться
- 1
Измените URL
Добавьте строку версии в запрос (/favicon.ico?v=2), чтобы браузер счёл это новым ресурсом и загрузил его. Увеличивайте число при каждом изменении.
- 2
Жёсткая перезагрузка или приватное окно
Cmd+Shift+R / Ctrl+F5 или новое приватное окно обходят сохранённую браузером копию.
- 3
Сбросьте кеш CDN
Если перед сайтом стоит CDN, инвалидируйте путь favicon, чтобы граничные узлы перестали отдавать старый файл до того, как браузер вообще его увидит.
Частые вопросы о кешировании favicon
Почему мой favicon не обновляется?
Браузер отдаёт кешированную копию из своего отдельного хранилища favicon, или CDN раздаёт старый файл. Измените URL иконки строкой версии в запросе и сделайте жёсткую перезагрузку в приватном окне.
Как очистить кеш favicon?
Надёжной кнопки очистки для отдельной иконки нет, так что вместо этого измените URL (/favicon.ico?v=2), что полностью обходит кеш. В крайнем случае, приватное окно или другой профиль браузера не имеют сохранённой иконки.
Отличается ли кеширование favicon между браузерами?
Да. Каждый браузер, а часто и каждый профиль, ведёт своё хранилище favicon со своим сроком жизни, поэтому иконка может выглядеть обновлённой в одном браузере и устаревшей в другом одновременно.