Как я могу скрыть кешированное изображение без нажатия F5?

Я делаю веб-приложение с MVC4 и С#.

Я разрешаю пользователю загружать изображение для изображения своего профиля. В этот момент мне нужно, чтобы предыдущее изображение профиля истекало, так что, когда браузер перезагружает страницу, отображается новое изображение. В настоящее время, поскольку оба изображения имеют одно и то же имя, браузер использует предыдущее изображение, которое было кэшировано вместо нового изображения.

Если я заставляю браузер перезагружаться, F5 показывает новое изображение. Как я могу убедиться, что пользователь, возвращающийся на страницу своего профиля, видит новое изображение, а не тот, что находится в кеше браузера, не нажимая F5?

Ответ 1

Вы можете добавить фиктивный параметр в конец имени файла изображения. Например,

<img src="...\avatar.jpg?d=7615833">

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

Ответ 2

При сохранении изображения на сервере добавьте (статический) бит случайного текста в имя файла и повторно сгенерируйте его при изменении изображения. Таким образом, браузер будет кэшировать изображение, когда он будет тем же самым, и перезагрузить его, когда он изменится, что дает желаемое поведение без добавления ненужного времени загрузки страницы.