A utilização do Profile em aplicações escritas sob o ASP.NET 2.0 tem crescido bastante e, com isso, há um detalhe importante que deve ser analisado quando utilizamos esta funcionalidade.
O que me refiro é com relação ao auto-save do mesmo. Por padrão, quando a página finaliza a sua execução, o módulo ProfileModule invocará o evento ProfileAutoSaving durante o evento EndRequest, chamando o método Save da classe ProfileBase, responsável por persistir os dados do mesmo na DB.
A questão é que, na maioria dos casos, as informações do Profile são alteradas em apenas uma página (página de configurações) e, nas demais, é apenas lido essas informações. Com isso, o resto das páginas invocam todas essas rotinas desnecessariamente. Se este é o seu cenário, ou ainda, se em algumas páginas altera o conteúdo, então o que pode fazer é desabilitar o auto-save e, explicitamente, salvar quando for necessário para ter uma melhor performance.
Essa configuração é definida no arquivo Web.Config, através do atributo automaticSaveEnabled do elemento profile. Para desabilitar, basta definir o atributo automaticSaveEnabled para false, como é mostrado abaixo:
<profile defaultProvider=”SqlProfileProvider” automaticSaveEnabled=”false”>
….
</profile>
… depois, quando em alguma página precisar alterar o conteúdo, faz:
Profile.CurrentLanguage = “pt-BR”;
Profile.Save();