Отключить кэш глобально .NET

#.net #caching

#.net #кэширование

Вопрос:

есть ли способ отключить кэширование сервера глобально в ASP.NET ? Например, добавив какие-то настройки в файл web.config?

До сих пор я пытался добавить их, и это ничего не изменило…

         <caching>
          <sqlCacheDependency enabled="false"></sqlCacheDependency>
            <outputCache enableOutputCache="false"
                enableFragmentCache="false"
                sendCacheControlHeader="false"
                omitVaryStar="false" />
        </caching>
  

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

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

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

3. Проблема, описанная выше, заключается в том, что раздел OutputCache не используется в качестве верхнего уровня в кэшировании

Ответ №1:

Существует также способ отключить это в system.webServer, если вы используете IIS7 / 7.5 или IIS Express. Это будет работать в вашем основном файле web.config (как для webforms, так и для mvc), а также в файлах web.config во вложенных папках, чтобы отключить его для определенных областей вашего приложения.

 <system.webServer>
    <caching enabled="false" />
</system.webServer>
  

Ответ №2:

Раздел OutputCacheSection используется для настройки параметров области приложения, например, включено или отключено кэширование вывода страницы. Например, вы можете отключить кэширование вывода страницы для всего приложения, добавив enableOutputCache="false" в раздел OUTPUTCACHES в вашем Web.config файле. Настройки в файле конфигурации имеют приоритет над настройками кэша на отдельных страницах, поэтому приведенная в примере настройка означает, что кэш выходных данных использоваться не будет.

 <system.web>
        <caching>
            <outputCache enableOutputCache="false"/>            
        </caching>
</system.web>
  

Ответ №3:

вы можете отключить кэширование выходных данных и состояние сеанса для всего приложения, удалив его модули , это можно сделать из web.config

 <httpModules>
  <add name="OutputCache" type="System.Web.Caching.OutputCacheModule" />
  <add name="Session" type="System.Web.SessionState.SessionStateModule" />
</httpModules>
  

или

добавьте это при загрузке страницы

 Response.Cache.SetCacheability(HttpCacheability.NoCache)
  

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

1. У меня нет этих модулей в моем web.config, и я уже пытался добавить Response. Кэш. Установить кэшируемость (HttpCacheability. NoCache) в Global.asax безуспешно

2. @user441365 — Ответ. Кэш. Установить кэшируемость (HttpCacheability. NoCache) требуется добавить на уровне страницы не в глобальном.asax

Ответ №4:

В соответствии с MSDN:

вы можете отключить кэширование вывода страницы для всего приложения, добавив enableOutputCache=»false» в раздел outputcaches в вашем файле Web.config.

например

 <configuration>
    <system.web>
        <caching>
            <outputCacheSettings enableOutputCache="false"/>
        </caching>
    </system.web>
</configuration>
  

Итак, ваша конфигурация не работает, потому что у вас есть enableOutputCache атрибут в outputCache элементе, когда он должен быть в outputCacheSettings элементе.

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

1. Это выдает мне сообщение: атрибут enableOutputCache не объявлен

2. Ага, 3.5 ок . Да, вы правы, похоже, что он перешел из OutputCache в outputCacheSettings между 3.5 и 4 — man схема web.config представляет собой ужасный беспорядок! В этом случае ваш оригинал должен был сработать. Одна из возможностей — какой веб-сервер вы используете (против разработчика? IIS? какая версия?)

3. Я запускаю Debug yes, и он все еще кэшируется

4. На самом деле ссылка на MSDN link показывает, что код в этом ответе неверен, текст над кодом правильный.