Почитай про .htaccess и Cache-Control
Первая же ссылка в гугле дает ответ
Запретить кеширование (указать свои расширения файлов разумеется)
<FilesMatch ".(pl|php|cgi|spl|scgi|fcgi)$">
Header unset Cache-Control
</FilesMatch>
Установить время кеширования в секундах
<FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$">
Header set Cache-Control "max-age=2592000"
</FilesMatch>
Однако, к сожалению это не всегда работает корректно и браузер может проигнорировать данные правила.
Неправильно настроенный хостинг тоже может отрабатывать неверно.
Для 100% решения используют метод лома - добавляют в конце файла произвольные числа (чаще время генерации/загрузки), выглядит примерно так avatar.jpg?abc=1234567890 или avatar.jpg?r1a2nd=937sad326723, то есть меняют URL (буквы и цифры могут быть любые, но каждый раз уникальные). Для статической картинки на сервере это никак не сказывается, а вот браузер считает это новым файлом и заново загружает.