Как сбросить кэширование и заменить картинку фронтально

Ответ

Для сброса кэширования изображения можно использовать несколько подходов:

  1. Добавление параметра с версией или временной меткой к URL:
<img src="image.jpg?v=123" alt="Example">

или в JS:

const img = new Image();
img.src = 'image.jpg?' + new Date().getTime();
  1. Использование Cache-Control заголовков на сервере:
Cache-Control: no-cache, no-store, must-revalidate
  1. Переименование файла (эффективно, но требует изменения кода)

  2. Для динамической замены в браузере:

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». Без этого они тебе старую картинку из своих тайных хранилищ будут подсовывать, хоть обосрись. Вот такие пироги, блядь.