4

メニューがあるマスターページがあります。メニューのC#コードは、DBに保存されたユーザー権限で実行時に作成されたユーザーコントロールにあります。現在、各ページ リクエストまたはポスト バック メニューが作成されています。メニュー作成は DB 呼び出しを使用するため

私の懸念は、各リクエストでこの DB 呼び出しを防ぐことはできますか? ユーザーが初めてログインしたときに、ユーザーの許可のためにDB呼び出しを行い、その後、すべてのリクエストに対してメニューが作成されるか、メニューのDB呼び出しがポストバックされないことを意味します。

メニュー ユーザー コントロールの出力キャッシュは私のシナリオで機能しますか?

4

3 に答える 3

0

page_load メソッドでPage.IsPostBackプロパティを使用します。

例えば:

private void Page_Load()
{
    if (!IsPostBack)
    {
        // Do anything here you want to only happen when 
        // the page is loaded 1st time
        // such as hit the database for the menu...
        CreateMenu();
    }
}

メニューをユーザー コントロールにする場合は、キャッシュ (パラメータによる) を使用して各ユーザーのメニューをキャッシュできますが、これを追加するのは、ロジックをテストした後でのみです。

編集 - コメントへの応答
ユーザー コントロールとしてメニューを作成し、コントロール出力キャッシュを使用して、ユーザーがログインしたときにメニューが作成され、その後キャッシュに保持されるようにします。ユーザーがアクセスしている間にメニューが変更されない場合は、非常に積極的なキャッシュを持つことができます。それ以外の場合は、行われた変更にメニューが応答する必要がある場合 (おそらく管理者がユーザーに別のメニュー項目を付与する場合)、変更されるまでキャッシュできます。データベースで検出されます。

部分的なページ出力キャッシュを実現する方法の例については、ASP.NET ページのキャッシュ部分に関する MSDN ドキュメントも参照してください。

于 2012-06-03T16:48:17.930 に答える
0

ログイン中にセッション変数自体にチェックを保存できます。

ページが読み込まれるたびに、セッション変数を確認するだけで済みます。

問題がある場合はお知らせください。

于 2012-08-30T10:45:10.530 に答える