Очистить все изображения в кеше браузера - PullRequest
1 голос
/ 04 апреля 2020

У меня есть приложение ASP. NET C#, которое содержит изображения. Я вошел и изменил некоторые из моих изображений, которые используются в приложении, но не изменили название. Я знаю, что если я изменю имя, оно загрузит новое изображение в браузер, но если мои клиенты уже посетили эту страницу, это изображение, скорее всего, будет кэшировано на клиентском компьютере.

Мне было интересно , есть ли путь через страницу GLOBAL.ASAX в начале сеанса, чтобы указать, что веб-сайт должен извлекать всю информацию и загружать и игнорировать все локальные кэшированные данные?

Это также будет полезно для JS и CSS файлы. Прямо сейчас я добавляю параметр URL, основанный на версии приложения ... Я не хотел бы делать это для всех изображений ...

1 Ответ

1 голос
/ 04 апреля 2020

Вы можете использовать HTTP-заголовок Clear-Site-Data.

Заголовок Clear-Site-Data очищает данные просмотра (файлы cookie, хранилище, кэш), связанные с запрашивающим веб-сайтом. Это позволяет веб-разработчикам иметь больший контроль над данными, хранящимися локально браузером для их происхождения.

Это все еще помечено как экспериментальное, но должно работать во всех современных браузерах. См. Clear-Site-Data в документации MDN для получения дополнительной информации.

Вы можете установить этот заголовок следующим образом:

response.Headers.Add("Clear-Site-Data", "cache");

Если вы хотите обновлять sh кэш каждый раз, когда публикуется новая версия, вы можете комбинировать это с поваром ie и используйте этот код в вашем global.asax:

protected void Application_BeginRequest(object sender, EventArgs e)
{
    var request = ((HttpApplication)sender).Request;
    var response = ((HttpApplication)sender).Response;

    var versionCookie = request.Cookies["version"];

    if (versionCookie == null)
    {
        versionCookie = new HttpCookie("version");
        versionCookie.Expires = DateTime.Now.AddYears(5);
    }

    if (versionCookie.Value != currentVersion)
    {
        versionCookie.Value = currentVersion;
        response.SetCookie(versionCookie);
        response.Headers.Add("Clear-Site-Data", "cache");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...