Почему значение по умолчанию HttpCachePolicy (Private) заставляет сервер кэшировать ответы?

#.net #iis #web-applications #cache-control

#.net #iis #веб-приложения #cache-control

Вопрос:

В моем веб-приложении (.Net 4.7.2), работающем на IIS (8.5 на win2012), у меня была эта строка кода:

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

в:

 protected override void OnInit(EventArgs e)
  

на моей главной странице код позади.

Я ожидал, что, удалив его, значение по умолчанию (Private) не приведет к кэшированию ответов с сервера, но это произошло. Разные пользователи начали получать ответы с сервера, которые были кэшированы (потому что они были из предыдущих запросов на ту же страницу).

Чего мне здесь не хватает?

Спасибо.

Ответ №1:

Заголовок элемента управления кэшем по умолчанию: Private

Механизм кэширования может кэшировать эту страницу в частном кэше и повторно отправлять ее только одному клиенту. Это значение по умолчанию. Большинство прокси-серверов не будут кэшировать страницы с этим параметром.

Во-первых, убедитесь, что вы импортировали главную страницу на все страницы, потому что вы добавили код без кэша на свою главную страницу.

если это все еще не работает для вас, вы можете использовать функцию заголовка HTTP-ответа IIS для очистки кэша клиента:

1) Откройте диспетчер IIS, выберите свой сайт.

2) Дважды щелкните заголовки HTTP-ответов на средней панели

введите описание изображения здесь

3) На панели Заголовки HTTP-ответов нажмите Установить общие заголовки… на панели действий.

4) В диалоговом окне Set Common HTTP Response Headers установите флажок для истечения срока действия веб-содержимого, выберите опцию для немедленного истечения срока действия и затем нажмите OK.

введите описание изображения здесь

Вы также можете обратиться к статье ниже для получения более подробной информации:

https://learn.microsoft.com/en-us/iis/configuration/system.webserver/staticcontent/clientcache

Комментарии:

1. Прежде всего, спасибо за ваше время. У меня есть настройка главной страницы на всех моих страницах, и функция общих заголовков в IIS также установлена, как вы опубликовали. Проблема, с которой я борюсь, заключается в том, что это «повторно отправляет его только одному клиенту». не произошло. Заголовок cache-control по умолчанию (Private) вызывал кэширование ответов сервера, а разные обращения (разные сеансы в IIS) получали один и тот же кэшированный ответ от сервера .. разве это не странно? Я не могу понять, почему это произошло.

2. @joaopintocruz не могли бы вы поделиться своим снимком заголовка ответа?