ВыводКэширование на пользователя на культуру, производительность памяти

Я разрабатываю веб-сайт, на котором каждый тип пользователя ({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] * [culturesCount] * [pagesCount]?

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


person Tobi    schedule 25.07.2011    source источник


Ответы (1)


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

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

person oazabir    schedule 31.07.2011