Pergunta

Temos vindo a utilizar o "Gotejamento" para tentar identificar o motivo de páginas com UpdatePanels em eles tendem a usar um monte de memória no lado do cliente.Com uma página com uma reposição normal, estamos vendo 0 vazamentos detectados por Gotejamento.No entanto, quando adicionamos uma atualização do painel à mistura, cada objeto DOM que está dentro do painel de atualização aparece a fuga (de acordo com Gotejamento).

Eu não estou certo de que é Gotejamento é confiável o suficiente para relatar esses tipos de coisas - o relatado vazamentos não parecem indicar Gotejamento é modificar a página um pouco.

Alguém tem alguma experiência com isso?Devo pânico e parar de usar o Microsoft Ajax?Eu não estou acima de duvidar da Microsoft, mas parece suspeito-me que poderia ser este mau.

Além disso, se você souber de uma ferramenta que é melhor do que o de Gotejamento, que seria útil também.

Foi útil?

Solução

De acordo com a ASP.NET AJAX em Ação, p.257

Pouco antes da idade de marcação é substituído com a versão atualizada da HTML, todos os elementos do DOM no painel são examinados para o Microsoft Ajax comportamentos ou controles ligados a eles.Para evitar vazamentos de memória, os componentes associados a elementos do DOM são eliminados e, em seguida, destruído quando o HTMl é substituído.

Então, até onde eu sei, qualquer asp.net componentes ajax dentro de painel de atualização são eliminados para evitar vazamentos de memória, mas qualquer coisa lá será substituído com o html recebido.

Portanto, se você não tem qualquer asp.net componentes ajax no recipiente de destino para a resposta, que seria basicamente o mesmo que um html interno de substituição com qualquer outro framework js / ajax pedido, então, eu diria que é apenas o modo como o browser lida com isso, em vez de asp.net ajax causando isso.

Além disso, embora possa ser "vazamento", pode ser por design, o que significa que o navegador pode não ter recuperado o dom elementos que ainda e lançou-los.Também, por gotejamento pode estar causando esses fuga, como é anexar os elementos do dom.

Outras dicas

O que é muito provável.Isso foi muito bonito o que nós assumido (navegador problema, não necessariamente Ajax).

O nosso problema é que agora, com este aplicativo que está sendo acessado por muitas pessoas através de um ambiente Citrix, com cada página continuamente a criação de objetos DOM e não liberá-los, o ambiente Citrix começa a goleada depois de algum uso.Eu já vi queixas semelhantes on-line (especialmente onde são burros o suficiente para acessar um Ajax site através do Citrix), mas isso não faz com que eu me sinta muito melhor que esse é o comportamento desejado.

Eu estou querendo saber agora, se alguém tiver vir acima com uma solução inteligente.Nós também temos um aplicativo de cliente onde estamos usando o .NET BrowserControl para aceder a estes sites, ao invés de incluir somente em linha reta IE7, assim, se alguém sabe um segredo de uma chamada de API (FreeStaleDomObjectsFTW()) podemos utilizar essa a extremidade da pilha, que seria útil também.

você pode anexar o pageLoading evento da classe PageRequestManager e percorrer os painéis de atualização propriedade e remover os elementos do DOM de cada um.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top