Проблема с кэшем

#asp.net #image #caching

#asp.net #изображение #кэширование

Вопрос:

У меня проблема с кэшем.

Когда я изменяю свойство ImageUrl элемента управления изображениями, иногда браузер использует кеш, и поэтому новое изображение не отображается.

Как я могу решить проблему, чтобы после изменения свойства ImageUrl отображалось новое изображение?

Вот мой код:

url-адрес строки = некоторый код;

imgAvatar.ImageUrl = url;

Ответ №1:

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

       Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.Cache.SetExpires(DateTime.Now.AddSeconds(-1));
        Response.Cache.SetNoStore();
        Response.Buffer = true;
        Response.CacheControl = "no-cache";
        Response.AddHeader("Pragma", "no-cache");
        Response.AppendHeader("Cache-Control", "no-store");
        Response.Expires = -1441;
  

Ответ №2:

Другой способ избежать кэширования отдельных компонентов — это то, что Джоэл обсуждал в раннем подкасте StackOverflow: прикрепите уникальный идентификатор в качестве http-параметра в конце URL-адреса компонента, которого вы хотите избежать кэширования. Затем обновляйте этот идентификатор всякий раз, когда вам нужно убедиться, что пользователи получают новую версию.

Итак, если ваш URL-адрес «http://www.mysite.com/images/myimage.png » тогда вы могли бы использовать «http://www.mysite.com/images/myimage.png?v=20110819a «

Примечание: Обычно этот трюк больше применим для Javascript и / или CSS, чем для изображений.