Ответ
Для сброса кэширования изображения можно использовать несколько подходов:
- Добавление параметра с версией или временной меткой к URL:
<img src="image.jpg?v=123" alt="Example">
или в JS:
const img = new Image();
img.src = 'image.jpg?' + new Date().getTime();
- Использование Cache-Control заголовков на сервере:
Cache-Control: no-cache, no-store, must-revalidate
-
Переименование файла (эффективно, но требует изменения кода)
-
Для динамической замены в браузере:
document.getElementById('myImage').src = 'new-image.jpg?' + Date.now();
Важно: при работе с CDN может потребоваться дополнительная инвалидация кэша через панель управления CDN.
Ответ 18+ 🔞
А, ну это ж классика, блядь! Картинка закэшировалась и не обновляется, аж бесит, как будто кто-то сухари в носки насыпал. Слушай, вариантов-то, оказывается, дохуя, как у дурака фантиков.
Ну, самый простой способ, который даже твоя бабка поймёт — это прикрутить к урлу картинки какую-нибудь хуйню, типа версии или времени. Браузер увидит новый URL и подумает: «О, ёпта, это ж новая хуйня, надо качать!», а не лезть в свой старый загашник.
Вот прямо в HTML можно так:
<img src="image.jpg?v=123" alt="Example">
А если ты её через жопу, то бишь JavaScript, подгружаешь, то ещё проще, блядь:
const img = new Image();
img.src = 'image.jpg?' + new Date().getTime(); // Тут время в мс прилепится, уникально, блядь!
Но это, конечно, костыль, ебать мои старые костыли. Если ты царь и бог на своём серваке, то можно с него и заголовки правильные слать, чтобы он браузеру намекнул: «Не кэшируй это говно, мудила!». В .htaccess или настройках сервера пишем какую-то магию:
Cache-Control: no-cache, no-store, must-revalidate
Это как табличку «Не влезай — убьёт!» повесить. Браузер, если не совсем долбоёб, послушается.
Самый же радикальный и надёжный способ, чтоб уж наверняка — это взять и переименовать сам файл, блядь. С photo.jpg на photo_new.jpg. Но это ж надо везде в коде ссылки менять, заёбешься, как сука, если проект не маленький.
Ну и последний лайфхак для уже открытой страницы. Допустим, пользователь сидит, а тебе надо ему картинку на лету поменять. Тыкаешь ему в консоль или в скрипте делаешь:
document.getElementById('myImage').src = 'new-image.jpg?' + Date.now();
И всё, красота, ебушки-воробушки!
А, и да, чуть не забыл, волнение ебать! Если у тебя всё это добро ещё и через CDN прогоняется (типа Cloudflare или там какой другой), то эти фокусы с параметрами могут и не прокатить сразу. Там надо заходить в админку этой самой CDN и вручную кэш выпинывать, искать кнопку «Purge» или «Invalidate». Без этого они тебе старую картинку из своих тайных хранилищ будут подсовывать, хоть обосрись. Вот такие пироги, блядь.