OutputCaching на пользователя для каждой культуры, производительность памяти - PullRequest
0 голосов
/ 25 июля 2011

Я занимаюсь разработкой веб-сайта, на котором каждый пользователь ({guest, loggedIn}) может просматривать [N] страниц в разных культурах ({en-US ...}).Я использую GetVaryByCustomString для обработки кэширования для каждой страницы:

Public Overrides Function GetVaryByCustomString(ByVal currentContext As HTTPContext, ByVal customArgs As String) As String  
    Select Case customArgs
        Case "userAndCulture"
            Return String.Format("{0}{1}", Languages.getLanguageID(), User.getUserID(0))
    End Select
    Return MyBase.GetVaryByCustomString(currentContext, customArgs)
End Function

Примечание: getUserID () имеет по умолчанию «returnValueWhenNull» DBNull.Value (он используется для SQL для большей части работы), поэтому яЯ посылаю 0 (ноль), чтобы у всех гостей была одна и та же страница.

Однако мой главный вопрос: такой механизм не убьет сервер с точки зрения памяти?Я имею в виду, разве нет потенциальных [loggedInUsersCount] * [CultureCount] * [pagesCount] страниц?

Еще одно примечание: страницы кэшируются только в памяти сервера

1 Ответ

1 голос
/ 31 июля 2011

Это не убьет сервер, потому что кеш имеет конечный предел.Это не будет превышать определенную границу.ASP.NET прагматично управляет размером кеша.При нехватке памяти он удаляет наименее используемые элементы из кэша.Таким образом, вы в безопасности.

Но если поместить в кэш так много элементов, вы не дадите другим данным шансов остаться в кеше.Вы должны посмотреть на счетчик производительности Windows и проверить коэффициент попадания ASP.NET OutputCache, чтобы увидеть, действительно ли вы получаете хороший удар по выходному кешу.

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