異なるバージョンのキャッシュプロファイルを使用して、いくつかのページのサーバーに異なるバージョンをキャッシュします。私はVaryByCustomパラメータを使用していますwitchはオーバーロードされています。 1。それは私の登録ユーザーはすぐにページ上の非常に異なる情報を持っていることが判明。私の質問は、ユーザーが何もキャッシュしないよりも登録ユーザーであると言うことが可能ですか?登録されていないユーザーのためのキャッシュのみASP.NET MVC
答えて
あなたはこれを試みることができる:コメント
へ
public override string GetVaryByCustomString(HttpContext context, string custom)
{
if ("User".Equals(custom, StringComparison.OrdinalIgnoreCase))
{
if (!string.IsNullOrWhiteSpace(Thread.CurrentPrincipal.Identity.Name))
return Guid.NewGuid().ToString(); // do not cache anything
return string.Empty; // cache for non-signed-in users
}
return base.GetVaryByCustomString(context, custom);
}
返信をGUIDはグローバル一意識別子です。 Guid.NewGuid().ToString()
を呼び出すたびに、一意の文字列が得られます。 技術的には、結果は依然としてにキャッシュされますが、一意の文字列を使用してキャッシュされます。そのため、サインオンした2人のユーザーに同じキャッシュ結果が表示される可能性は極めて低いです。実際には、サインオンした同じユーザーがページのキャッシュ結果を見る可能性は同じです。
何かをキャッシュしたくない場合は、手動でキャッシングを実装することもできます。しかし、私は、あなたがアクションメソッドに「OutputCacheAttribute
を使って、署名されていないユーザをキャッシュするが、サインオンしたユーザはキャッシュしない」と言うことはできないと思う。
私はこれを試してみませんか?なぜあなたは言うときに彼は何もキャッシュしません:return Guid.NewGuid()。ToString(); –
ありがとう、おそらく最高のオプションは、少なくとも私は無駄にメモリを使用していないだろうすべてのユーザーの異なるバージョンのキャッシュです。もう一度、ありがとう。 –
はい、それは私たちが行うことです。 '' User "'文字列の 'GetVaryByCustomString'オーバーライドから' Thread.CurrentPrincipal.Identity.Name'を返します。このようにして、各ユーザーはそれぞれ独自のキャッシュバージョンを取得し、匿名ユーザーはすべて個別のキャッシュバージョンを共有します。 – danludwig
サインインしたユーザーのキャッシュを停止することができます。カスタムキャッシュプロバイダーを実装することで、追加、設定、削除の方法で何かのキャッシュを防止できます。また、global.asaxのユーザ別にキャッシングを行うこともできます。なぜ私はこのアプローチを使用したことがない理由は、私はまだいくつかのページのキャッシュをユーザのために必要とし、私はキャッシングプロバイダクラス内の現在のキャッシングプロファイルを発見する方法を見つけられなかったので、プロフィール。何らかの理由で、すべてのページで署名されたユーザーのキャッシュを防止したいのであれば、これはより良いアプローチだと思うし、GUIDを使用するカスタムアプローチによって異なります。
- 1. アカウントASPネットコアの登録ユーザーが登録されていない
- 2. PHP - 登録されていないユーザーのための予防策
- 3. まだ登録されていないユーザーの登録ページを許可する
- 4. エラー「初期化されていない定数登録」ユーザー自己登録とCancan super_admin登録ユーザーのためのDeviseを使用
- 5. 単純な登録のためのasp.netの身元認証 - asp.net mvc
- 6. h264:ユーザー登録されていないSEIメッセージの追加
- 7. 認証されていないユーザーのみのコンテンツのキャッシュ
- 8. mvc .net ADO> NETプロバイダが登録されていないか、読み込めませんでした。
- 9. Asp.Net MVC:新しいユーザーの登録後に現在のユーザーが変更されます
- 10. MVC +ウィンザー城。リポジトリが適切に登録されていない
- 11. 登録のためのカスタムパラメータの追加 - 許可されていないパラメータ
- 12. ユーザー登録ページには、私のユーザー登録ページを検証したくない
- 13. /appname /にすでに登録されています。モデルのユーザーは既に登録されています
- 14. ASP.NET MVC 3で認証されていないユーザーのキャッシュホームページ
- 15. ItemListenerが登録されていない
- 16. MSDNのASP.netユーザー登録ページの例外
- 17. Spring MVCコントローラのマッピングが登録されていません
- 18. 登録ユーザーと未登録のユーザー
- 19. 登録ユーザーのDnnfilepickerアップロードファイルボタンが表示されない
- 20. 異なるタイプのユーザーを登録する最良の方法asp.net mvc
- 21. ASP.NETのJQueryとラジオボタン。クリックは登録されていません
- 22. 以前の登録ユーザーとしてasp.netフォームにログインしてください
- 23. laravelこのユーザーは登録されていません
- 24. ASP.NET MVC 5ユーザーの登録をカスタマイズして別のデータベースに接続する
- 25. 既に登録されているSharePointイベントレシーバーの登録
- 26. Corda:リクエスタが登録されていないため、パーティーが拒否したセッションリクエスト
- 27. 登録されていないコントローラの角度ネストされたコントローラのスローエラー
- 28. ユーザーの登録
- 29. laravelユーザー登録のための複雑なパスワード
- 30. 公開されていないASP.NET MVCユーザー
「登録済み」と言うと、「現在ログインしていますか? – danludwig
はい、それは私が意味したものです、それはそれはユーザーのいくつかのタイプ(ユーザーは、彼らが持っているかどうかにいくつかのプロパティによって異なります)でさえも問題ではありません –