Перезагрузите кэшированное изображение с помощью JavaScript
Можно ли использовать JavaScript для перезагрузки конкретного изображения, которое было кэшировано?
На мой сайт пользователи могут загружать новые аватары. После этого я хочу, чтобы браузер заново загрузил новый аватар, чтобы пользователь мог видеть, что изменение сделано.
На данный момент я делаю это так:
$('profilePic').src = 'flash/userImage.ashx?id=12345677&type=avatar&t=' + new Date().getTime()
userImage.ashx возвращает изображения на основе идентификатора и запрашиваемого типа. Он не использует параметр 't' - просто URL-адрес другой, и изображение перезагружается.
Это прекрасно работает на странице, где пользователь загружает свой новый аватар, но в других местах сайта он все равно будет использовать кэшированное изображение.
Я мог бы отключить кэширование для аватаров пользователей, но я не очень хочу этого делать. Можно ли принудительно перезагрузить определенное кэшированное изображение?
1 ответ
Возможно, кеширование с помощью ETag - это решение: http://en.wikipedia.org/wiki/HTTP_ETag
Когда другой пользователь загружает страницу после обновления аватара, ETag, который он отправляет вместе с запросом изображения, отличается от ETag, сгенерированного на сервере, и поэтому должен давать ответ 200 вместо 304, поэтому изображение перезагружается.