2008-09-04 8 views
2

「Drip」では、UpdatePanelを持つページでクライアント側のメモリが大量に使用される傾向にあることを確認しました。定期的なポストバックがあるページでは、Dripによって検出されたリークは0件です。ただし、更新パネルをミックスに追加すると、更新パネル内のすべての単一のDOMオブジェクトがリークするように見えます(Dripに従って)。Microsoft ASP.NET AjaxがDOMオブジェクトのリークを引き起こしますか?

私は、Dripがこれらの種類のものを報告するのに十分に信頼できるとは確信していません。報告されたリークは、Dripがページをわずかに変更しているように見えます。

誰もこの経験がありますか?私はパニックに陥り、Microsoft Ajaxの使用をやめるべきでしょうか?私はマイクロソフトを疑っている以上ではないが、私にはそれが悪いかもしれないことが怪しいようだ。

また、Dripより優れているツールが分かっている場合は、それも参考になります。

答えて

2

ASP.NET AJAX in Actionによると、古いマークアップは更新されたHTMLに置き換えられ直前に257

は、パネル内のすべてのDOM要素には、Microsoft Ajaxの動作や、それらに添付のコントロールのために検討されています。メモリリークを回避するために、DOM要素に関連付けられたコンポーネントは廃棄され、HTMlが置き換えられると破棄されます。

だから、私の知る限り、更新パネル内の任意のasp.net Ajaxコンポーネントは、メモリリークを防ぐために配置されているが、そこに何か他のものは、単に受信したHTMLに置き換えられます。

レスポンスのターゲットコンテナにasp.net ajaxコンポーネントがない場合は、基本的に他のjsフレームワーク/ ajaxリクエストとの内部html置換と同じになります。それはブラウザがこれを処理するasp.net ajaxではなく、これをどのように処理するかだけです。

また、「漏洩」している可能性がありますが、ブラウザがdom要素を再利用してリリースしていない可能性があります。また、ドリップはそれらがdomエレメントに付いているので、それらを漏らさせるかもしれません。

0

これはおそらくそうです。これは私たちが想定していたもの(ブラウザの問題で、必ずしもAjaxであるとは限りません)でした。

Citrix環境を介して多くの人がこのアプリケーションにアクセスし、各ページが継続的にDOMオブジェクトを作成し、公開しないという問題がありました。Citrix環境では、使用後にスラッシングが発生します。私は同様の苦情をオンラインで(特にあなたがCitrix経由でAjaxのWebサイトにアクセスするのに十分なところでは)見てきましたが、これが意図された動作であると感じることはありません。

誰かが賢明な回避策を思いついているのではないかと思います。私たちはまた、.NET BrowserControlを使ってこれらのウェブサイトにアクセスするクライアントアプリケーションを持っています。誰でも秘密APIコール(FreeStaleDomObjectsFTW())を知っていれば、それは同様に有用であろう。

関連する問題