2014-11-20 3 views
0

Я внес некоторые изменения на сайт и заметил, что когда я делаю изменения в базе данных, т.е. добавьте значение нового человека, имя человека не отображается в выпадающем списке.Понимание HttpContext.Current.Cache

Если я сброшу пул приложений несколько раз, имя наконец появится для меня. Хотя это не всегда кажется для других.

Это, кажется, управляется сильно кэшем, и я нашел следующее:

HttpContext.Current.Cache.Insert("PersohnList", d, Nothing, 
     DateTime.MaxValue, New System.TimeSpan(0, 30, 0), 
     Caching.CacheItemPriority.High, Nothing) 

Я заметил несколько значений здесь интерес,

a) DateTime.MaxValue 
b) New System.TimeSpan(0, 30, 0) 

Будет ли кэш истекает через 30 минут и вставить имя нового человека или оно не истечет из-за DateTime.MaxValue.

Любые идеи?

+0

Вы явно кэшируете список? Я не думаю, что он кэшируется по умолчанию. Как он инициализируется первоначально? Если он заполняется, пусть говорит Page_Load, то на каждом обновлении/новом сеансе он будет делать вызов базы данных. Если вы сохраняете его где-то на стороне сервера, это совсем другая проблема. – PoweredByOrange

+0

Вы прочитали страницу MSDN для [Insert] (http://msdn.microsoft.com/en-us/library/05kd8d77 (v = vs.110) .aspx)? Также тот факт, что он переживает более одного сброса пула приложений, кажется, что ваша проблема заключается в кешировании на стороне клиента, а не на стороне сервера. –

ответ

1

Я не уверен, что выиграет. Кажется, что этот код устанавливает slideExpiration и absoluteExpiration. Я бы предположил, что последний выиграет в этом, но MSDN documentation говорит, что вы должны использовать только тот или иной. Если вы используете slideExpiration, вы должны установить для параметра absoluteExpiration значение NoAbsoluteExpiration, и если вы используете absoluteExpiration, вы должны установить slideExpiration на NoSlidingExpiration.

Если бы я был вами, я бы просто сделал недействительным кеш, когда значение обновляется (HttpContext.Current.Cache.Remove("PersohnList") и перезагрузите его снова.

+0

Tbh..не уверен, что победит. Я соглашусь с вашим ответом, поскольку я не уверен, что оба должны быть установлены ... в соответствии с MSDN. Решил переработать, как работает кешированный список. Сброс пула приложений и очистка кеша в браузере. Я думаю, что я заметил ошибку в том, как это объединяется, что объясняет, почему у меня была проблема. – thegunner

0

+1 для раздвижных окон. Каждый раз, когда другой пользователь прикасается к этому ключу, «PersohnList», истечение срока действия кеша добавляет еще 30 минут. Кроме того, проверьте System.Runtime.Caching как более современную альтернативу.

От http://msdn.microsoft.com/en-us/library/system.runtime.caching%28v=vs.110%29.aspx

«Пространство имен System.Runtime.Caching содержит типы, которые позволяют реализовать кэширование в NET Framework приложений.

Классы в этом пространстве имен обеспечивают способ использования кэширования объектов, как те, в ASP .NET, но без зависимости от сборки System.Web ».