Принудительно IE, чтобы получить страницу - PullRequest
2 голосов
/ 07 октября 2010

Я пробовал множество способов заставить IE8 перезагрузить страницу, но не получилось.IE просто продолжает использовать свой внутренний кеш, не запрашивая его у веб-сервера.

Я отправляю следующие заголовки с моего веб-сервера:

Response.Add(new StringHeader("Expires", DateTime.UtcNow.AddYears(-1).ToString("r")));
Response.Add(new StringHeader("Cache-Control", "no-store, no-cache, must-revalidate, max-age=0"));
Response.Add(new StringHeader("Pragma", "no-cache"));
Response.Add(new StringHeader("Last-Modified", DateTime.UtcNow.ToString("r")));

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

Как заставить IE загружать страницу каждый раз (не заставляя моих пользователей отключать кеширование внутри IE)?

Ответы [ 3 ]

3 голосов
/ 09 октября 2010

Правильный способ - отправить эти HTTP-заголовки в ответе:

Pragma: no-cache
Expires: -1
Cache-Control: no-cache, no-store

При их использовании все работает в IE без каких-либо других модификаций.

1 голос
/ 07 октября 2010

Самый простой способ - добавить параметр с сжатой отметкой даты / времени в строку запроса ... Это делает браузер похожим на совершенно новую страницу.

Просто быстрое обновление , если вы отправляете данные на сервер, то IE пропустит кэш и загрузит новые данные.Однако, если вы только отправляете GET-запросы, то IE собирается просмотреть URL-адрес и свои собственные настройки, чтобы определить, следует ли извлекать данные из кэша или фактически обращаться к серверу за данными.

Теперь, если пользовательесли для параметра «Проверить наличие новых версий сохраненных страниц» задано значение «Никогда», то с этим ничего нельзя поделать, кроме добавления значения в строку запроса.См. KB263070 для получения подробной информации от MS об этих параметрах.Быстрый просмотр ответов Microsoft показывает большое количество людей, которых это укусило.Решение, которое всегда дается, состоит в том, чтобы пользователь мог изменить свои настройки кэша.

Таким образом, для вас решение будет (на уровне сложности)

  1. Добавитьочень изменяемое значение строки запроса
  2. Сообщите своим пользователям, что они ДОЛЖНЫ изменить настройку «Проверять наличие новых версий» на «Каждое посещение страницы» или «Автоматически».
  3. Измените свои ссылки, чтобы вызывать обратную передачу,(фу)

Ряд приложений выбирают либо элемент 2, либо элемент 1. Причина в том, что 2 имеет наименьшее влияние на базу кода, а элемент 1 - наименьшее влияние на ваших пользователей.

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

0 голосов
/ 07 октября 2010

Надеюсь, я понимаю ваш вопрос, возможно, попробуйте еще раз, это прояснит:

   List<string> keys = new List<string>();
    IDictionaryEnumerator enumerator = Cache.GetEnumerator();
    while (enumerator.MoveNext())
    {
        keys.Add(enumerator.Key.ToString());
    }

    foreach(string key in keys)
    {
        Cache.Remove(key);
    }

, если это должно быть на нескольких страницах, вы можете поместить его на главную страницу (или использовать какой-либо другой рефакторинг).

Существует также директива OutPutCache, если вышеупомянутое не то, что вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...