Как запретить браузеру отображать кэшированную версию страницы? - PullRequest
5 голосов
/ 13 мая 2009

Одним из решений было бы добавить переменную QueryString к URL-адресу, который представляет собой случайный guid, но это выглядит немного грязно Есть ли где-нибудь параметр, который не позволяет браузеру отображать кэшированную версию страницы?

Ответы [ 6 ]

9 голосов
/ 13 мая 2009

Вы можете добавить метатег, подобный этому.

<meta http-equiv="pragma" content="no-cache" />
6 голосов
/ 13 мая 2009

В наших проектах ASP.Net мы создаем BasePage, от которого наследуются все другие страницы. На базовой странице у нас есть функция

Public Sub DisableCaching()
    With Response
        .Expires = 0
        .ExpiresAbsolute = Date.Today.AddDays(-1)
        .AddHeader("pragma", "no-cache")
        .AddHeader("cache-control", "no-cache")
    End With
End Sub

Мы называем это на любой странице, которую мы не хотим кэшировать.

3 голосов
/ 13 мая 2009

Установите для заголовка Cache-Control значение no-cache.

3 голосов
/ 13 мая 2009

ONE aproach будет означать добавление «Expires или Cache-Control Header».

Это было извлечено из Yahoo Best Practices (http://developer.yahoo.com/performance/rules.html)

В этом правиле есть две вещи:

* For static components: implement "Never expire" policy by setting far future Expires header
* For dynamic components: use an appropriate Cache-Control header to help the browser with conditional requests

Браузеры (и прокси-серверы) используют кэш для уменьшения количества и размера HTTP-запросов, что ускоряет загрузку веб-страниц. Веб-сервер использует заголовок Expires в ответе HTTP, чтобы сообщить клиенту, как долго компонент может быть кэширован. Это заголовок Expires далекого будущего, сообщающий браузеру, что этот ответ не будет устаревшим до 15 апреля 2010 года.

  Expires: Thu, 15 Apr 2010 20:00:00 GMT

Если ваш сервер Apache, используйте директиву ExpiresDefault, чтобы установить дату истечения срока действия относительно текущей даты. В этом примере директивы ExpiresDefault устанавливается дата истечения 10 лет с момента запроса.

  ExpiresDefault "access plus 10 years"

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

Если вы нуждаетесь в этом для веб-разработки, другим способом было бы принудительно очистить кеш. в Firefox это можно сделать с помощью клавиш CTRL + F5 или CTRL + SHIFT + R.

Надеюсь, это поможет, Lucas

2 голосов
/ 13 мая 2009

Попробуйте что-нибудь из этого:

Response.Cache.SetExpires(DateTime.Now.AddSeconds(360));
Response.Cache.SetCacheability(HttpCacheability.Private)
Response.Cache.SetSlidingExpiration(true);

Page.Response.Cache.SetCacheability(HttpCacheability.NoCache)

Также посмотрите этот вопрос .

1 голос
/ 13 мая 2009

Одним из решений было бы добавить переменную QueryString к URL-адресу, который является случайным guid, но это выглядит немного грязно

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

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