Перезагрузите кэшированное изображение с помощью javascript

#javascript #mootools

#javascript #mootools

Вопрос:

можно ли использовать javascript для перезагрузки определенного изображения, которое находится в кэше?

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

На данный момент я делаю это так:

 $('profilePic').src = 'flash/userImage.ashx?id=12345677amp;type=avataramp;t='   new Date().getTime()
  

UserImage.ashx возвращает изображения на основе идентификатора и запрашиваемого типа. Он не использует параметр ‘t’ — это просто для того, чтобы URL-адрес отличался, поэтому изображение перезагружается.

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

Я мог бы отключить кэширование для пользовательских аватаров, но я действительно не хочу этого делать. Можно ли принудительно перезагрузить конкретное кэшированное изображение?

Ответ №1:

Возможно, кэширование с помощью ETag является решением: http://en.wikipedia.org/wiki/HTTP_ETag

Когда другие пользователи загружают страницу после обновления аватара, ETag, который он отправляет с запросом на изображение, отличается от ETag, сгенерированного на сервере, и поэтому должен привести к ответу 200 вместо 304, поэтому изображение перезагружается.