Я разрабатываю веб-сайт, на котором каждый тип пользователя ({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]?
Еще одно замечание: страницы кэшируются только в памяти сервера