質問

私たちは「Drip」を使用して、UpdatePanel を含むページがクライアント側のメモリを大量に使用する傾向がある理由を特定しようと試みてきました。通常のポストバックを含むページでは、Drip によって検出されたリークは 0 件です。ただし、更新パネルをミックスに追加すると、更新パネル内にあるすべての DOM オブジェクトがリークしているように見えます (Drip によると)。

Drip がこの種のことを報告できるほど信頼できるかどうかはわかりません。報告されたリークは、Drip がページをわずかに変更していることを示しているようです。

これについて経験のある人はいますか?パニックになって Microsoft Ajax の使用をやめるべきでしょうか?私は Microsoft を疑うつもりはありませんが、それが可能性があるのは疑わしいように思えます。 これ 悪い。

また、Dripよりも優れたツールをご存知でしたら、それも参考になります。

役に立ちましたか?

解決

によると ASP.NET AJAX の動作, 、p.257

古いマークアップが更新された HTML に置き換えられる直前に、パネル内のすべての DOM 要素が Microsoft Ajax の動作またはそれに関連付けられているコントロールについて検査されます。メモリ リークを回避するために、DOM 要素に関連付けられたコンポーネントは破棄され、HTM1 が置き換えられるときに破棄されます。

私の知る限り、更新パネル内の asp.net ajax コンポーネントはメモリ リークを防ぐために破棄されますが、そこにあるその他のものは受信した HTML に置き換えられるだけです。

したがって、応答のターゲットコンテナーにasp.net ajaxコンポーネントがない場合、それは基本的に他のjsフレームワーク/ajaxリクエストで内部HTMLを置き換えるのと同じになるため、単にその方法であると言えます。これは、asp.net ajax が原因ではなく、ブラウザーが処理します。

また、「リーク」している可能性もありますが、仕様によるものである可能性があります。つまり、ブラウザがまだ dom 要素を回収して解放していない可能性があります。また、ドリップがドム要素に付着しているため、ドリップが漏れを引き起こしている可能性があります。

他のヒント

その可能性は非常に高いです。これはほぼ私たちが想定していた通りでした (ブラウザの問題、必ずしも Ajax とは限りません)。

現在の問題は、このアプリケーションが Citrix 環境を介して多くの人によってアクセスされており、各ページが継続的に DOM オブジェクトを作成して解放しないため、ある程度の使用後に Citrix 環境がスラッシングを開始することです。オンラインで同様の苦情を見たことがありますが (特に、Citrix 経由で Ajax Web サイトにアクセスするほど愚かな場合)、これが意図された動作であると考えると、あまり気分が良くなりません。

誰かが賢い回避策を思いついたかどうかを今考えています。また、直接の IE7 ではなく、.NET BrowserControl を使用してこれらの Web サイトにアクセスするクライアント アプリもあります。そのため、秘密の API 呼び出しを知っている人がいれば (FreeStaleDomObjectsFTW())スタックの端から利用できるので、それも便利です。

に添付できます PageRequestManager クラスの pageLoading イベント そしてパネルの更新プロパティを確認し、それぞれの DOM 要素を削除します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top