Recomendado: faça bom uso do ASP.NET 2.0 Mapping URL Introdução: o mapeamento de URL é um novo recurso fornecido no ASP.NET 2.0. A tecnologia de mapeamento de URL nos ajuda a mapear um URL específico para outro URL. Para ajudar a entender, vamos supor que você tenha uma página chamada homepage.aspx no site para acessar a página inicial, e todos os usuários também a usam
9.3.5 Cache de dadosPrimeiro de tudo, é importante observar que, embora o cache de dados e o cache do conjunto de registros sejam usados para melhorar o desempenho, os dois são irrelevantes. O cache de dados é uma área de armazenamento temporário de dados que permite o uso de dados no cache em vez de regenerar novos dados. Isso se aplica apenas a dados que não são frequentemente alterados, mas são acessados várias vezes.
Uma das maneiras mais fáceis de armazenar em cache os dados do ASP é usar o aplicativo e as variáveis em toda a sessão. Por exemplo, suponha que haja algumas páginas da web que precisam escolher um tipo de livro. Em circunstâncias normais, um arquivo incluído com as seguintes funções pode ser criado.
<%
Função Booktypes ()
Dim RSbookTypes
Strquote dim
strquete = chr (34)
Definir rsbookTypes = server.createObject (adodb.recordset)
'Pegue os tipos de livro
rsBooktypes.open USP_Booktypes, strconn
Response.Write <Selecione Nome = & StrQuote & LstBooktype & StrQuote &>
Embora não seja rsbookTypes.eof
Response.write & <pution> & rsbookTypes (type) & </pption>
rsbooktypes.movenext
Wend
Response.Write & </leclect>
rsbooktypes.close
Definir rsbookTypes = nada
Função final
%>
Isso está simplesmente chamando um procedimento armazenado para obter o tipo de livro enquanto cria uma lista de seleção. A desvantagem do código acima é que, toda vez que a função é chamada, o banco de dados deve ser acessado. Portanto, re-modifique esta função.
<%
Função Booktypes ()
Dim RSbookTypes
Strquote dim
Strlist dim
'Veja se a lista está no cache
Strlist = Aplicação (Booktypes)
Se strlist = então
'Não é armazenado em cache, então construa lista e cache
strquete = chr (34)
Definir rsbookTypes = server.createObject (adodb.recordset)
'Pegue os tipos de livro
rsBooktypes.open USP_Booktypes, strconn
strlist = <select Name = & strquote & lstBooktype & strQuote &>
Embora não seja rsbookTypes.eof
strlist = strlist & <pution> & rsbookTypes (tipo) & </ppthion>
rsbooktypes.movenext
Wend
strlist = strlist & </leclect>
rsbooktypes.close
Definir rsbookTypes = nada
'Verifique a lista
APLICAÇÃO (LOTTYPES) = STRLIST
Final se
Booktypes = strlist
Função final
%>
Este código não apenas abre o conjunto de registros, ele verifica se o valor da variável de aplicativo Booktype está vazio. Se não estiver vazio, o conteúdo da variável é usado. Se vazio, o conjunto de registros é aberto como antes. Obviamente, uma vez que a primeira pessoa executa essa rotina, os dados são armazenados em cache, portanto, isso é útil apenas para os dados que não são alterados com frequência.
Se você deseja armazenar em cache os dados do usuário, pode usar variáveis no escopo da sessão, mas deve observar que a sessão tem uma data de validade. Após a expiração, a variável da camada de sessão será cancelada junto com a sessão e o código poderá encerrar a execução.
Usando a ferramenta de estresse do aplicativo da web (WAS), foram obtidos os resultados da análise na Tabela 9-4:
Tabela 9-4 Resultados da análise obtidos usando as ferramentas
método
Cliques de página
Sem cache
190
Tem um cache
11000
É óbvio que o desempenho melhorou. Mas não use o método acima para armazenar em cache tudo. Afinal, essa abordagem é aplicável apenas a dados que foram formatados para exibição. Além disso, considere que, se o servidor da Web serve apenas a uma pessoa específica, dificilmente é um uso típico do servidor da Web. O uso do WAS permite simular vários usuários em um único servidor, o que permite testar seu aplicativo de maneira mais realista.
Ao simular um certo número de usuários, a ferramenta de estresse do aplicativo da Web pode testar a tolerância das páginas da Web. A ferramenta possui uma interface gráfica simples que é muito fácil de usar. Mais informações podem ser obtidas em http://homer.rte.microsoft.com/ ou faça o download da ferramenta.
Objetos de cache
O que devo fazer se quiser armazenar em cache dados não formatados? Pode ser usado de maneiras diferentes em lugares diferentes? Obviamente, você também pode fazer isso com variáveis de aplicação ou sessão. Considere o título do livro. Você pode usar este título em várias páginas, talvez exibir todos os títulos em uma tabela ou exibi -los em uma caixa de listagem para os usuários escolherem, etc. Você pode pensar em armazenar em cache o conjunto de registros sem precisar armazenar o texto HTML com tags.
Os objetos podem ser armazenados em cache nas variáveis de aplicação ou sessão, mas há duas questões principais a serem prestadas atenção:
· Objetos armazenados nas variáveis de aplicativo devem suportar threads gratuitos, para que sejam objetos de encadeamento gratuitos ou objetos de encadeamento duplo. Isso significa que os componentes criados por VB não podem ser armazenados em cache na variável de aplicativo.
· Armazenar um objeto de encadeamento da unidade no estado da sessão significa que o thread que criou o objeto é o único thread que permite o acesso a ele. Portanto, o IIS não pode preencher melhor o gerenciamento de threads, porque qualquer página que tenta acessar esse objeto deve esperar que o thread original sirva a página. Isso matará qualquer chance de estender o aplicativo.
Para discussão sobre problemas de encadeamento, consulte o Capítulo 15.
Por padrão, o ADO é carregado como um objeto de encadeamento da unidade, principalmente porque alguns provedores de banco de dados OLE não são seguros de threads. Existe um arquivo de registro no diretório de instalação do ADO que converte ADO em um modelo de dois threads, permitindo que os objetos ADO sejam armazenados com segurança nos objetos de aplicação e sessão.
Você pode pensar que todos os problemas são resolvidos e um aumento significativo da velocidade pode ser alcançado usando vários tipos de objetos, mas esse não é necessariamente o caso. Muitos perceberam que, desde que se conectar a um banco de dados é uma operação relativamente cara, os objetos de conexão de cache podem economizar muito tempo ao se conectar novamente. Isso é verdade, mas o armazenamento em cache de um objeto de conexão significa que a conexão nunca será fechada; portanto, o pool de cache de conexão é relativamente ineficiente. Uma idéia que se conecta aos pools de cache é realmente reduzir os recursos usados no servidor, e os objetos de cache no estado de ASP obviamente não podem reduzir o uso de recursos. Na verdade, eles também são aumentados porque cada cache de objeto ocupa os recursos do servidor, o que reduzirá bastante a eficiência do servidor da Web para um site ocupado.
Portanto, os objetos de conexão não devem ser armazenados, mas e os objetos RecordSet, especialmente os registros desconectados? Supondo que a ADO tenha mudado de um thread de unidade para um thread duplo, não há razão para não fazer isso, desde que você saiba exatamente o que está fazendo. Não pense que isso melhorará automaticamente o desempenho das páginas ASP. Cada configuração de registro em cache retém os recursos do servidor em termos de memória e gerenciamento de ASP, portanto, não cache grandes conjuntos de registros.
Compartilhar: Tabela de registro de leitura e gravação ASP Um exemplo: o seguinte é o conteúdo referenciado: <%Dim readComputerName Set ReadComputerName = CreateObject (wscript.shell) Dim Computername, Reg