ASP.NET MasterPages e viewstate
-
03-07-2019 - |
Pergunta
Eu estou olhando para melhorar o desempenho do meu site, não porque ele está executando mal, mas apenas como um exercício geral. A sugestão de costume para sites asp.net é remover viewstate sempre que possível. Eu acredito que isso pode ser feito por cada controle em uma página separada ou para toda a página.
A minha pergunta é se eu desativar o viewstate página isso vai parar o estado de visualização de controles em uma masterpage (como eu entendo o masterpage é realmente um controle na página).
Solução
Sim, a página é o criador do fluxo de página. Assim, a desativação viewstate para a página leva a prestação viewstate fora do processo OnInit. A melhor pergunta seria por que desabilitar o viewstate para a página principal fazer o mesmo?
Outras dicas
Não há uma maneira fácil de reduzir todo o seu viewstate.
Passo 1. Crie uma nova classe que se parece com isso:
Imports System
Imports System.Web.UI
Public Class SessionPageStateAdapter
Inherits System.Web.UI.Adapters.PageAdapter
Public Overrides Function GetStatePersister() As System.Web.UI.PageStatePersister
Return New SessionPageStatePersister(Page)
End Function
End Class
Passo 2. Adicionar uma pasta App_Browsers
ao seu projeto.
Passo 3. Na pasta nova App_Browsers
, adicionar um novo arquivo default.browser
parecida com esta.
<browsers>
<browser refID="Default">
<controlAdapters>
<adapter controlType="System.Web.UI.Page" adapterType="[YourNamespaceGoesHere].SessionPageStateAdapter" />
</controlAdapters>
</browser>
</browsers>
Quando você executa suas páginas agora, você deve encontrar o seu tamanho viewstate caiu para alguns bytes. As interceptações classe SessionPageStateAdapter viewstate antes que seja servido para o navegador e prende-lo em no servidor no estado de sessão. O pouco de viewstate que ainda é enviada para o cliente é apenas um identificador que é usado para reconstituir o viewstate original quando a página é enviada de volta para o servidor.
Você pode achar este artigo útil:
http://msdn.microsoft.com/en-us/library/ms972976. aspx
Apenas uma nota rápida no lado antes de otimização do site, você tem otimizado o servidor, certificando-se todos os arquivos são compactado antes de ser enviado.
Se não for esse vai te dar um bom impulso antes mesmo de começar a mexer com a página.