Pergunta

Com controles de usuário em uma página, eu entendo que cada controle tem um impacto sobre o uso de memória, armazenando seu próprio estado na ViewState. Minha pergunta é: quanto?

Por exemplo - Eu tenho um formulário de feedback como um controle no meu masterpage. Ela é definida como Visible = "false" por padrão. Um usuário clica em um botão de feedback, e o controle se torna visível quando ela é necessária.

O que seria o impacto desempenho relativo ao ter o controle sentado lá em everypage (como ele está localizado na masterpage), mas não é visível? O site que estou desenvolvendo irá potencialmente ter grandes quantidades de tráfego e gostaria de saber se eu estou me preparando para uma dor de cabeça mais tarde, se as coisas se tornam lento.

Graças

Foi útil?

Solução

Performance podem ser afetados no servidor eo cliente. Primeiramente você quer reduzir a quantidade de HTML incluindo viewstate que é enviado para o cliente. Se este se sente em cada página, então você vai enviar esta informação viewstate mais frequentemente do que você realmente precisa.

Eu acho que você deve ter alguma lógica que garante que o controle de formulário de feedback só é adicionado à página de feedback. Ao invés de uso visible = "false", colocá-lo em sua própria página e um link para ele, ou adicionar dinamicamente o controle para a página.

Os principais benefícios será reduzido uso de banda, e mais rápido processamento da página no cliente. benefícios secundários incluem mais fácil depuração e renderização código mais limpo para o cliente.

Com todos os problemas de desempenho que você deve ser o teste de desempenho e fazer julgamentos com base em dados concretos. Neste caso, o trabalho fora do tamanho do viewstate no cliente, em seguida, multiplique por número de pedidos para ver o tamanho do uso de banda no servidor. No cliente usar uma ferramenta como o Firebug para entender o tamanho da página geral recebido pelo cliente.

Outras dicas

Depende do controle. DataGrid com linhas centenas pode gerar 100k de viewstate. Por outro lado, opção não vai gerar muito.

Você pode simplesmente colocar seu controle formulário de feedback na página aspx vazio, visitá-lo no navegador e verificar se há campo __VIEWSTATE escondido. Este é quanto você vai formulário de feedback irá adicionar a cada página em termos de viewstate. Então você terá que decidir se é aceitável.

Eu não htink sobre tais uma otimizações logo no início. Se ele vai ficar lento, mais tarde, você sempre pode mudar a forma de ser html puro e usar AJAX ou algo para postar dados para o servidor. Enquanto ele é o controle do usuário e não cópia colado conteúdo será fácil para otimizar

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