Pergunta

Eu não tenho certeza se isso é possível em ASP.NET, mas aqui está o problema que tenho: algumas das listas de dados na minha aplicação web são exibidos usando um GridView ; no entanto, porque algumas dessas listas podem conter uma grande quantidade de dados, que em algum momento empurrar o peso page up para a vários gama megabyte devido ao ViewState . Uma vez que não quer repetir a consulta o banco de dados para esta informação cada vez que há uma postagem na página eu queria saber se havia uma maneira que eu poderia armazenar em cache os dados fornecidos para o controle no servidor e, em seguida, acessá-lo na próxima vez há uma nova postagem.

Então, isso é mesmo possível? Se assim for, alguém pode me aponte na direção de mais informações sobre como fazer isso? Se não for possível, alguém tem alguma sugestão sobre como eu poderia ser capaz de resolver este problema?

Foi útil?

Solução

Você pode usar uma loja diferente para o seu estado de visualização, além da página. Este artigo descreve alguns métodos para fazer isso.

A essência do presente é para substituir SavePageStateToPersistenceMedium e LoadPageStateFromPersistenceMedium.

Outras dicas

Você pode tentar desligar ViewState no GridView. Isso pode muitas vezes ser feito sem afetar a funcionalidade. Funciona muito bem se o seu GridView só é a apresentação de dados e não permite edições, atualizações, exclusões, etc.

http://www.pluralsight.com/main /screencasts/screencast.aspx?id=understanding-viewstate

EnableViewState="false"

Em geral, você tem que criar um equilíbrio entre ViewState no cliente e algum tipo de cache no servidor. Não horrorizai de re-examinando sua base de dados. Ele pode armazenar em cache os dados muito bem. Possivelmente olhar permitindo página em cache. Gostaria de evitar encher todos esses dados em sessão que vem com seu próprio conjunto de problemas.

http://msdn.microsoft.com/en-us/library /hdxfb6cy.aspx

<%@ Page Language="C#" AutoEventWireup="true" ... %>
<%@ OutputCache ... %>

Aqui está um exemplo de como você pode armazenar o Viewstate em arquivos temporários locais: http://www.marklio.com/ marklio / PermaLink.aspx? guid = af76f1a0-2d44-44c3-bfb5-029740b8e683

Você ainda está usando Viewstate com esta abordagem, mas em vez de encher o HTML que você está criando arquivos temporários no lado do servidor. Assim, o usuário não notará que o Viewstate é enorme. Você também pode reescrever o exemplo acima para armazenar os dados ViewState em outro lugar, como um banco de dados ou até mesmo na memória.

A vantagem dessa abordagem é que você não terá que reescrever muito código. A desvantagem é que esses arquivos temporários serão encher espaço no servidor e precisa ser limpo de vez em quando.

Rob, o que eu iria tentar no seu caso é armazenar em cache os dados recuperados do banco de dados em sessão - a primeira grade de tempo é que o solicite.

Se você tentar isso e combiná-lo com a desativação do estado de exibição para a rede, você pode vir até com uma solução bastante escorregadio.

Se você não pode contar com Session para o cache, há sempre alguns mecanismos alternativos de persistência que pode fazer o trabalho.

Mas a partir do aspecto do projeto de uma dada situação, eu com certeza gostaria de ir com a abordagem cache de dados.

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