1

test.aspx ページにチェックボックスのテーブルを動的に作成しています。テーブルのディメンション (行数と列数) は、データベースにクエリを実行することによって決定されます。

test.aspx ページで、次のことを行います。

<script language="C#" runat="server">

protected void Page_Load ( object src, EventArgs e ) {
   //Query the database to get the data for rows and columns

   CheckBox[] chkBox = new CheckBox[rows * columns]; //creates a collection of checkboxes

   //Iterate over the query set in a double for loop to create dynamic checkboxes
}

</script>

現在、行数= 20、列数= 10ですが、増加する可能性があります(列の可能性が高くなります)。

Firebug の [Net] タブを使用して、さまざまなイベントにかかった時間を確認したところ、GetTest.aspx が 4 分近くかかっていることがわかりました。これは、待機するには時間がかかりすぎます。

ページの読み込み時間を短縮する方法はありますか? 動的チェック ボックスを作成する私のアプローチは正しいですか?

前もって感謝します。

乾杯

4

4 に答える 4

3

私はこのコメントを見ています:

// Query the database to get the data for rows and columns

あなたはこれを理解していますが、Webページの読み込みが遅い場合は10回のうち9回ですが、これはデータベース操作が遅いためです。

私の推測では、(a)おそらくインデックスがないために非常に非効率的なデータベースクエリがあるか、(b)どこかのループ内でデータベースクエリを実行している(非常に悪い)。

ASP.NETは、1秒未満で数千のチェックボックスを作成できます。これは単なるクラスのインスタンス化です。問題はどこかにあります。

于 2010-02-11T03:51:10.220 に答える
1

ページで ASP.NET トレースを有効にして、すべての時間が費やされている場所を確認します。もちろん、どのページでも 4 分は長すぎます。ただし、test.aspx と GetTest.aspx の 2 つを挙げています... GetTest.aspx とは何ですか?

編集:
OK、あなたはここですべての話をしているわけではありません。このページは他に何をしていますか? これらのコントロールはどこへ行くのでしょうか? 上記と同様のコードを使用してテストページでこれを試したところ、一瞬でレンダリングされました.

私が言ったように... TRACE を有効にして、何が本当に時間を占めているかを見つけてください! ツールを使用してください、それがそこにある理由です。

于 2010-02-10T22:08:59.917 に答える
0

コントロール(チェックボックス)の作成とサーバー側からのホルダーへの追加は非常に安価です。あなたが数十億を作成していないことを考えると。

生成されるHTMLは、ローカルマシンで4分かかるほど大きくないはずです。

生成されたHTMLサイズをチェックして、その質量を確認してください。

もし私があなただったら、私は自分のサーバーに次のコードを書いていただろう。考えてください。

protected void Page_Load(object src, EventArgs e) {
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < columns; j++) {
            holderPanel.Controls.Add(
                    new CheckBox { 
                            ID = string.Format("chk{0}{1}", i, j), 
                            Text = "some text"
            });
        }
    }
}

holderPanelをサーバー側asp:Panelまたは単純なDivものと考えてくださいID = "holderPanel"runat="server"

于 2010-02-10T15:31:44.487 に答える
0

Firebug を無効にしてみて、それでも時間がかかるかどうかを確認してください。また、コードが予想よりも多くのチェックボックスを生成していないことを再確認してください。

于 2010-02-11T03:41:04.340 に答える