문제

우리는 UpdatePanel이 있는 페이지가 클라이언트측 메모리를 많이 사용하는 경향이 있는 이유를 파악하기 위해 "Drip"을 사용해 왔습니다.정기적인 포스트백이 포함된 페이지에서는 Drip이 감지한 누출이 0개입니다.그러나 업데이트 패널을 믹스에 추가하면 업데이트 패널 내부에 있는 모든 단일 DOM 개체가 누출되는 것처럼 보입니다(Drip에 따르면).

Drip이 이러한 종류의 내용을 보고할 만큼 신뢰할 수 있는지 확신할 수 없습니다. 보고된 유출 내용은 Drip이 페이지를 약간 수정하고 있음을 나타내는 것 같습니다.

누구든지 이것에 대한 경험이 있습니까?당황해서 Microsoft Ajax 사용을 중단해야 합니까?나는 Microsoft를 의심하지 않지만 그럴 수도 있다는 것이 나에게는 의심스러워 보입니다. 이것 나쁜.

그리고 드립보다 좋은 도구를 아신다면 그것도 도움이 될 것 같습니다.

도움이 되었습니까?

해결책

에 따르면 ASP.NET AJAX 실행, p.257

이전 마크업이 업데이트된 HTML로 대체되기 직전에 패널의 모든 DOM 요소에 Microsoft Ajax 동작이나 연결된 컨트롤이 있는지 검사됩니다.메모리 누수를 방지하기 위해 DOM 요소와 관련된 구성 요소는 삭제된 다음 HTML이 교체될 때 삭제됩니다.

내가 아는 한, 업데이트 패널 내의 모든 asp.net ajax 구성 요소는 메모리 누수를 방지하기 위해 삭제되지만 그 안에 있는 다른 모든 구성 요소는 수신된 HTML로 대체됩니다.

따라서 응답을 위한 대상 컨테이너에 asp.net ajax 구성 요소가 없으면 기본적으로 다른 js 프레임워크/ajax 요청을 사용하는 내부 html 대체와 동일하므로 이것이 방법이라고 말하고 싶습니다. 이 문제를 일으키는 asp.net ajax가 아닌 브라우저가 이를 처리합니다.

또한 "누출"될 수 있지만 의도적으로 설계된 것일 수도 있습니다. 즉, 브라우저가 아직 dom 요소를 회수하여 해제하지 않았을 수도 있습니다.또한 돔 요소에 부착되어 있기 때문에 물방울로 인해 누출이 발생할 수 있습니다.

다른 팁

그럴 가능성이 매우 높습니다.이것은 우리가 가정했던 것과 거의 같습니다(브라우저 문제, 반드시 Ajax일 필요는 없음).

이제 우리의 문제는 Citrix 환경을 통해 많은 사람들이 이 애플리케이션에 액세스하고 각 페이지가 지속적으로 DOM 객체를 생성하고 이를 해제하지 않아 Citrix 환경이 일부 사용 후 스래싱을 ​​시작한다는 것입니다.온라인에서 유사한 불만 사항을 본 적이 있지만(특히 Citrix를 통해 Ajax 웹 사이트에 액세스할 만큼 멍청한 경우) 이것이 의도된 동작이라는 사실이 별로 기분이 좋지 않습니다.

누군가 영리한 해결 방법을 생각해 냈는지 궁금합니다.또한 IE7이 아닌 .NET BrowserControl을 사용하여 이러한 웹사이트에 액세스하는 클라이언트 앱도 있으므로 비밀 API 호출(FreeStaleDomObjectsFTW()) 우리는 스택의 끝에서 활용할 수 있는데, 그것도 유용할 것입니다.

당신은 PageRequestManager 클래스의 pageLoading 이벤트 패널 업데이트 속성을 살펴보고 각각의 DOM 요소를 제거합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top