Я теряю весь свой кеш .... (Элементы исчезают из моего кеша) - PullRequest
2 голосов
/ 10 июня 2009

В настоящее время я разрабатываю сайт в ASP.NET Webforms ..

Я кеширую вещи, где это имеет смысл ... добавляя вещи, используя высокий / нормальный / низкий приоритет .. сказать им, чтобы они оставались в кэше в течение 2 недель, 1 недели, 4 часов соответственно

im показывает текущее количество кэшированных элементов на каждой странице (по причинам отладки).

иногда, если я быстро прохожу по сайту, количество элементов в кеше может доходить до 2000 элементов ... но если я жду 5 минут и обновляю страницу, кэш уменьшается до 20 элементов ... (только то, что было кэшировано) на этой странице)

Есть ли способ узнать, что происходит? и есть ли причина для этого, что я пропускаю?

я использую Win7, 4 Гб оперативной памяти, 64-разрядную, VS10, .net4,

у меня есть 4 гигабайта оперативной памяти, так почему мой кэш должен быть полностью пуст?

Я бы сказал, что 10% кэшированных элементов имеют размер около 4 КБ, а остальные - строки длиной около 100 символов.

РЕДАКТИРОВАТЬ: я использую скользящий срок действия

РЕДАКТИРОВАТЬ: Я разобрался, были один или два элемента, которые были ОЧЕНЬ БОЛЬШИМИ, и они были установлены в высокий приоритет .. это и некоторые другие небольшие изменения решили мою проблему.

Ответы [ 4 ]

9 голосов
/ 10 июня 2009

Не имеет значения, как долго вы будете указывать ему оставаться в кеше, если пул приложений будет перезагружаться каждые хх минут. На большинстве серверов пул приложений по умолчанию перезагружается каждые 1440 минут (24 часа). Ваш кэш не сможет выжить после повторного использования пула приложений, если вы не сохраните данные.

Я не настаиваю так долго (почти никогда не бывает практичным). Я также установил приложение, чтобы, если кэш был очищен, чтобы восстановить себя, КАК ЭТО НУЖНО ДАННЫМ - не все сразу.

Вы также можете использовать больше ОЗУ, чем разрешено для пула приложений, слишком много ЦП и т. Д.

И если это выполняется на компьютере разработчика каждый раз, когда вы перезагружаете приложение или перезагружаете Visual Studio, все также удаляется.

Посмотрите на свои пулы приложений, и вы, вероятно, увидите виновника сброса.

6 голосов
/ 10 июня 2009

То, что система имеет 4 ГБ ОЗУ, не означает, что процесс ASP.NET может использовать все это пространство, а также не означает, что кэш ASP.NET может эффективно использовать все это пространство. Как я понимаю и наблюдал зверя, он начнет очищаться, если почувствует, что он становится слишком полным, и звучит так, будто вы кешируете множество данных.

Способ отследить это - использовать функцию обратного вызова срока действия кэша для записи материала. Он должен быть в состоянии дать вам представление о том, что выбрасывается и когда и, возможно, почему.

2 голосов
/ 10 июня 2009

Вероятно, ваши работники пула приложений перерабатывают (в режиме ожидания или иным образом) и, таким образом, запускаются с пустым кешем.

0 голосов
/ 10 июня 2009

У вас есть абсолютный или скользящий срок действия?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...