Нежелательное кэширование на стороне сервера ASP.Net MVC3 - PullRequest
0 голосов
/ 30 ноября 2011

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

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

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

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

Ответы [ 2 ]

1 голос
/ 30 ноября 2011

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

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

0 голосов
/ 30 ноября 2011

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

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

...