2013-02-26 3 views
0

У меня есть веб-приложение, которое выполняется на сервере Windows 2008 r2. Одна из страниц занимает слишком много времени, чтобы обрабатывать ее при первой загрузке. Это занимает около 15 секунд, а затем почти мгновенно. Случается, что процесс w3wp.exe перепрыгивает с 200 МБ ОЗУ до 700 МБ ОЗУ за это время. Это прекрасно, страница огромна и требует такого объема памяти. После этих 15 секунд он переключается на 200 МБ ОЗУ и, если кто-либо обращается к этой странице, он становится почти мгновенным. Его только в первый раз он делает независимо от того, кто его просил. Теперь через некоторое время (минуты, если не десятки минут), когда кто-то снова запрашивает страницу, он делает то же самое - 15 секунд для обработки, и он перескакивает до 700 МБ ОЗУ.Кэширование сервера ASP.NET

Я хочу как-то сохранить кэш 700 МБ, чтобы он не истекал. Даже после того, как он опускается до 200 МБ ОЗУ, страница загружается мгновенно, но я предполагаю, что именно поэтому через более длительный период времени она «истекает» и должна снова отобразить ее. Я читал о @outputcache, но я не уверен, что это то, что мне нужно. И есть many types of caching. Может ли кто-нибудь указать мне в правильном направлении? Я не беспокоюсь о потреблении памяти или о чем-либо еще, я просто не хочу, чтобы пользователь ждал 15 секунд, чтобы загрузить его, даже если это не происходит слишком часто. Благодаря!

PS: приложения, написанные на C# под ASP.NET 4.0

+0

это не может быть проблема кеширования. Это может быть указано в коде события загрузки страницы. Проверьте событие загрузки страницы. используете ли вы какую-либо резьбу внутри своей страницы? –

+0

Думаю, нет, я точно не знаю, что вы имеете в виду. Не могли бы вы дать мне небольшой пример? Благодаря! – osmiumbin

+0

на странице load event protected void Page_Load (отправитель объекта, EventArgs e) { } для выполнения кода требуется слишком много времени. Это означает, что при загрузке страницы есть много кодов для выполнения на сервере. Есть ли какие-либо методы stsrem.threading.thread внутри вашего мероприятия laod? –

ответ

1

Ваша страница будет скомпилирован в первый раз, она вызывается после запуска пула приложений (http://msdn.microsoft.com/en-us/library/ms366723(v=vs.100).aspx).

по умолчанию тайм-аут пула приложений iddle до следующего отключения составляет 20 минут: http://technet.microsoft.com/en-us/library/cc771956(v=ws.10).aspx

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

Помимо улучшения кэширования в вашем приложении, вы можете сделать 2 вещи:

+0

да, вы правы, это имеет смысл. Посмотрю, что я могу сделать. – osmiumbin

Смежные вопросы