動的に生成されたマークアップを持つページで作業しています。そのため、フォームで使用できるフィールドがわかりません。したがって、ビュー モデルを作成する代わりに、POST メソッドは FormCollection を使用します。POST を受信すると、プログラムはすぐに実行されます。
私の問題: フォームで [SUBMIT] をクリックすると、コントローラーの POST アクションの最初の行でブレークポイントに到達するまでに約 10 ~ 15 秒かかります。私のシナリオでは、フォームに 800 個の入力フィールドがあります。たった 800 フィールドの FormCollection を作成するのに、本当にこれほど時間がかかるのでしょうか? プロセスを合理化し、応答時間を改善する方法はありますか?
編集:
IE プロファイラーは、ほとんどの時間が JQuery CSS セレクターに費やされていることを示しています。すべての CSS を削除すると、ページは非常に速く動作します。サーバーにポストバックする前に CSS セレクターが実行されるのはなぜですか? 無効にできますか?
編集 2: プロファイラーは現在、JQuery 1.6.4.min.js で費やした時間を表示しています。関数は「k」です。それは単なる内部変数ルックアップだと思います。また、入力フィールドから 'size' および 'maxlength' 属性を削除すると、ページの応答が速くなることもわかりました (万歳)...例外は...クライアント側の検証に必要です。私はまだ速度を改善する方法を見つけようとしています。または、属性を削除して、クライアント側のフィールドの入力長を制限する方法を保持しています。
編集 3: jquery-1.6.4.min.js を掘り下げて、関数 k を見つけました。編集 2 に従って、「maxlength」属性と「size」属性を追加/削除すると、すべての違いが生じます (3k ミリ秒ではなく 33K ミリ秒)。ただし、関数 K は多くのことを行う必要はありません...それらは nodetype===1 ではなく、最初の IF が失敗し、次の行で関数から戻る必要があるためです。
function k(a,c,d)
{
if(d===b&&a.nodeType===1)
{
var e="data-"+c.replace(j,"-$1").toLowerCase();
d=a.getAttribute(e);
if(typeof d=="string")
{
try
{
d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)
}
catch(g){}
f.data(a,c,d)
}
else
d=b
}
return d
}