Нежелательное кэширование на стороне сервера ASP.Net MVC3

Я работаю над приложением MVC3 и столкнулся с проблемой непреднамеренного кэширования объектов. Мой код создает объекты из вызовов к отдельной настраиваемой DLL бизнес-логики. Эта бизнес-логика DLL получает данные из базы данных. После того, как я изменил данные в базе данных, я все еще вижу старые данные, даже после закрытия браузера и повторного запуска приложения. Это не проблема кеширования браузера, потому что я вижу это, когда отлаживаю в среде разработки.

В процессе разработки, если я остановлю сервер разработки asp.net, а затем перезапущу приложение, я получу новые данные. В IIS, если я перезагружаю веб-сайт, я получаю новые данные.

Любая идея, почему asp.net кэширует и повторно использует эти объекты, даже после того, как они вышли из области видимости?

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

2 ответа

В ASP.NET MVC3 по умолчанию нет кэширования, по крайней мере, нет кэширования данных. Убедитесь, что настройки IIS верны, и вы случайно не используете OutputCacheAttribute,

Что касается кэширования на бизнес-уровне: за последние два дня я видел как минимум три проблемы, связанные с кэшированием. Имейте в виду: кэширование сложно, как и статические переменные. Если это не нужно, не делайте этого. Кэширование чрезвычайно мощно, но также и опасно. Это также верно для вышеупомянутого OutputCacheAttribute,

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

Когда вы говорите, что бизнес-уровень имеет "некоторое кэширование", что это значит? Как вы кешируете?

Другие вопросы по тегам