2012-11-13 4 views
10

Я делаю веб-приложение с MVC4 и C#.Как истечь кешированное изображение без удара F5?

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

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

+5

Как насчет смены имени? + google for 'If-Modified-Since' – zerkms

ответ

6

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

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

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

+0

Почему бы вам не использовать' no-cache'? Случайный параметр просто уродливый – zerkms

+0

Разве он не должен каждый раз добавлять одинаковое число, если он хочет предотвратить перезагрузку изображения? – neeKo

+3

Возможно, используйте измененную дату файла или хеш его содержимого. – CodesInChaos

2

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

Смежные вопросы