セッションの特定の値に基づいて MVC の出力キャッシュを変更することは可能ですか? 私は、varybycustom 機能を使用し、Global.asax で GetVaryByCustomString をオーバーライドすることについて多くのことを読みましたが、現時点ではセッションを利用できません。
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);
}
これは、リクエスト パイプラインの後半までセッションが作成されないためだと理解しています。
私の懸念は、ユーザーのセッションに基づいてキャッシュを変更しないと、ページ (ユーザーがセッションで持っているものに基づいて変更され、そのユーザーに固有の追加の HTML があるなど) がキャッシュされ (URL が同じであるため)、ロードバランサー、プロキシサーバーなどによって提供され、ページ上の他の人のセッション情報を使用して他のリクエストに提供されます!
URL が同じである理由は、ユーザーが「ゲスト」としてアクセスし、何らかの情報を入力 (POST) し、これが検証されてセッションに保存され、同じページにリダイレクトされるためです (これは現在のはずです)。セッションデータに基づいてユーザーに固有であること)。
「ゲスト」が同じ URL にアクセスした場合、毎回同じ「標準」ページを提供する必要があるため、ページ自体は通常どおりにキャッシュする必要があります。
この方法でキャッシュを変更することは可能ですか?