Czy jest możliwa zmiana wyjściowej pamięci podręcznej w MVC na podstawie pewnych wartości w sesji? Dużo czytałem na temat używania funkcji różnicowania i nadpisywania GetVaryByCustomString w Global.asax, ale sesja nie jest dostępna w tym momencie.Wyjściowa pamięć MVC na podstawie wartości sesji
public override string GetVaryByCustomString(HttpContext context, string custom)
{
if (custom == "somekey")
//Want to check the session here (but it isn't available).
return base.GetVaryByCustomString(context, custom);
}
Rozumiem, że dzieje się tak, ponieważ sesja nie została utworzona później w potoku żądania.
Moim zmartwieniem jest to, że bez zmiany pamięci podręcznej na podstawie sesji użytkownika, strona (która zmienia się w zależności od tego, co użytkownik ma w sesji, ma dodatkowy HTML właściwy dla tego użytkownika itp.) Zostanie zbuforowana (ponieważ adres URL jest to samo) i obsługiwane przez nasz system równoważenia obciążenia, serwery proxy itp., a następnie podawane do innych wniosków z informacjami o sesjach innych osób na stronie!
Powód, dla którego adres URL jest taki sam, polega na tym, że użytkownik przychodzi jako "gość", wprowadza pewne informacje (POST), jest to sprawdzane i zapisywane w sesji, a następnie są one ponownie kierowane z powrotem na tę samą stronę (które powinno teraz być specyficzne dla użytkownika na podstawie danych sesji).
Sama strona powinna być przechowywana w pamięci podręcznej w normalnym trybie, ponieważ jeśli "gość" odwiedza ten sam adres URL, powinien za każdym razem wyświetlać tę samą "standardową" stronę.
Czy można w ten sposób zmieniać buforowanie?