Вопрос

У меня есть вопрос, связанный с методами аннулирования кэша ... Я пытаюсь реализовать механизм для своего веб-сайта, который автоматически аннулирует кэш браузера (CSS, изображения ...). Я хочу иметь возможность программно аннулировать кеш браузера при каждом обновлении сайта (изменение изображений или стилей);

Например: для текущей версии, среди прочего, CSS и некоторые изображения были изменены. В этой ситуации я хочу, чтобы после завершения обновления, когда пользователь выполнял запрос к веб-сайту, кэш его браузера автоматически становился недействительным, заставляя тем самым повторно загружать новые изображения и стили. Это должно быть сделано только для первого запроса клиента ... следующие должны быть извлечены из кеша (поэтому установка прагмы no-cache исключена).

Вот что я пробовал: в обработчик событий BeginRequest я добавил следующие строки:         Response.Cache.SetCacheability (HttpCacheability.ServerAndPrivate);     Response.Cache.SetETag (& Quot; \ & Quot; e111293b17594f1487d136ea7e9314ac \ & Quot; & Quot;);

это устанавливает ETag в заголовках ответа. Я полагал, что если я буду менять этот ETag в каждом выпуске и устанавливать его при каждом запросе, кеш будет аннулирован, но, похоже, это не так. Я использовал заголовки Live HTTP, чтобы увидеть результаты, и ETAG правильно настроен для ответа, но CSS и изображения все еще берутся из кэша ....

Есть идеи, как мне это сделать или можно ли вообще это сделать?

Заранее спасибо!

Это было полезно?

Решение

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

 <link rel="stylesheet" type="text/css" 
       href="default.css?buildnumber=<%= Buildnumber %>" />

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top