IE JavaScript のパフォーマンスが FF や Chrome に比べてひどいことはわかっていますが、ほとんどのユーザーは IE8 を使用しています。FF でのパフォーマンスの問題に気付かない (驚き)。ダイアログ機能に Jquery と Jquery-ui を使用しています。
基本的に、ajax を使用してダイアログ ボックスに読み込む多数のリンクがあります。ボタンをクリックしてダイアログ ボックスを表示すると、非常に高速に読み込まれます (~0.1 秒)。ただし、ダイアログを閉じて再度表示すると、表示されるまでにかなりの時間がかかります。
データベースと ajax 呼び出しは問題ではありません。データがダイアログ ボックスに追加され、単純なロジックを使用して関数が再度呼び出されないようにします。ダイアログ ボックスを開こうとする後続の試みは、より速くなるはずです。
IE8 のプロファイラーを使用して、次の呼び出しが何万もあることに気付きました。
"hidden" "curCSS" "JScript - window script block"
これらの関数呼び出しは、ダイアログを初めて開いたときに表示されません。なぜか途方に暮れています。
明らかに、ダイアログが最初にロードされたときに、ダイアログ内の個々の要素に対してスクリプトが実行されることはありませんが、その後の呼び出しでこれが変わるのはなぜでしょうか?
いくつかのコード:
$(document).ready(function () {
$("#dialog").dialog({
autoOpen: false,
resizable: false,
draggable: false,
closeText: "",
width: "auto",
dialogClass: "ddx",
});
$("#button").click(function (e) {
e.preventDefault();
//Check if "this" is empty, if not, data is already loaded
if ($.trim($("#dialog").html()).length > 0) {
$("#dialog").dialog("open");
}
else {
$.ajax({
url: baseUrl,
dataType: "text",
success: function (data) {
$("#dialog").append(data);
}
});
$("#dialog").dialog("open");
}
});
});
本文の html:
<div id="dialog" title="Test Dialog" class="ddx"></div>
ダイアログには、何百もの li を持つネストされたリストのいくつかのレベルが含まれることになります。