1. Visão geral
Em aplicações Web, a geração de alguns relatórios pode demorar muito para o banco de dados calcular; alguns sites fornecem informações meteorológicas, o que requer acesso a um servidor remoto para fazer uma chamada SOAP para obter informações de temperatura. Todos estes são exemplos de informações complexas. Adicionar muitas informações complexas a uma página da Web pode sobrecarregar o servidor da Web e o servidor de banco de dados. jsp (a primeira escolha para aplicativos de nível empresarial SUN) (a primeira escolha para aplicativos de nível empresarial SUN) o buffer de bloco de código oferece aos desenvolvedores a liberdade de adicionar várias informações complexas à vontade.
jsp (a primeira escolha para aplicativos de nível empresarial SUN) (a primeira escolha para aplicativos de nível empresarial SUN) pode encapsular e executar código Java complexo na biblioteca de tags, o que torna o jsp (a primeira escolha para aplicativos de nível empresarial SUN) (a primeira escolha para aplicativos de nível empresarial SUN) Os arquivos são mais fáceis de manter, tornando mais conveniente para desenvolvedores não profissionais usar jsp (a primeira escolha para aplicativos de nível empresarial SUN) (a primeira escolha para aplicativos SUN empresariais) aplicativos de nível) arquivos de página. Já existem muitas bibliotecas de tags, que são produtos comerciais ou produtos de código aberto. Mas a maioria desses produtos usa bibliotecas de tags apenas para implementar funções que podem ser implementadas com um Java Scriptlet simples. Poucos produtos usam tags personalizadas de alguma forma criativa para fornecer jsp (aplicativos de nível empresarial SUN) A primeira escolha) (a primeira escolha para. A biblioteca de tags personalizadas da SUN para aplicativos de nível empresarial era quase impossível de ser alcançada antes.
A biblioteca de tags OSCache foi projetada pela OpenSymphony. É um aplicativo de tag personalizado jsp (primeira escolha do aplicativo de nível empresarial SUN) (primeira escolha do aplicativo de nível empresarial SUN) que fornece a capacidade de usar o jsp existente (a primeira escolha do aplicativo de nível empresarial SUN). escolha)(A primeira escolha para aplicativos de nível empresarial SUN) realiza a função de buffer de memória rápido dentro da página. Embora existam alguns fornecedores que oferecem produtos de cache em vários formatos, todos eles são produtos específicos do fornecedor. OSCache pode ser executado em qualquer servidor compatível com jsp (primeira escolha do aplicativo de nível empresarial SUN) (primeira escolha do aplicativo de nível empresarial SUN) 1.1. Ele não pode apenas armazenar em cache o jsp existente (primeira escolha do aplicativo de nível empresarial SUN) (aplicativo de nível empresarial SUN. ) para todos os usuários. A primeira escolha para aplicativos) e pode ser armazenado em buffer por usuário. OSCache também inclui alguns recursos avançados para melhorar a escalabilidade, como buffer para disco, liberação de buffer programável, controle de exceções, etc. Além disso, como outros produtos OpenSymphony, o código do OSCache é distribuído gratuitamente sob uma licença de código aberto.
Este artigo toma como exemplo um processo de design de site de leilão imaginário para apresentar o processo de trabalho do OSCache. Este site imaginário incluirá: uma página de gerenciamento que relata atividades recentes de leilões; uma página inicial totalmente funcional com diversas informações promocionais e uma barra de navegação especial que contém informações sobre todas as atividades de leilão não resolvidas do usuário;
2. Página de gerenciamento
O site de leilões contém um relatório de gerenciamento e leva vários segundos para que o servidor de banco de dados crie tal relatório. É importante que o relatório demore muito para ser gerado, pois podemos ter vários administradores monitorando o funcionamento do sistema, e queremos evitar a regeneração do relatório toda vez que o administrador nos visitar. Para conseguir isso, encapsularemos a página inteira em uma tag de buffer no nível do aplicativo que é atualizada a cada hora. Alguns produtos de outros fornecedores têm funcionalidades semelhantes, mas o OSCache faz isso melhor que eles.
Por uma questão de simplicidade, não nos concentraremos muito em questões de formatação. Ao escrever a página de gerenciamento, primeiro adicionamos a declaração da biblioteca de tags à página:
<%@ taglib uri="cachetags" prefix="cache" %>
Em seguida, temos que cercar a página inteira com tags de cache. O tempo de cache padrão para tags de cache é de 1 hora.
<cache:cache> .... Relatórios de gerenciamento complexos.... </cache:cache>
A página de gerenciamento agora foi armazenada em cache. Se o administrador acessar a mesma página novamente dentro de uma hora após a geração da página, ele verá a página armazenada em cache anteriormente e não há necessidade de o servidor de banco de dados gerar este relatório novamente.
3. Página inicial
A página inicial do site de leilões exibe as atividades do site e promove leilões que estão prestes a terminar. Queremos exibir o número de leilões em andamento, o número de usuários logados no momento, uma lista de leilões que terminarão em um futuro próximo e o horário atual. Essas mensagens têm diferentes requisitos de precisão de tempo. Os leilões no site geralmente duram vários dias, então podemos definir o tempo para armazenar o número de leilões válidos em 6 horas. O número de usuários obviamente mudará com mais frequência, mas aqui armazenaremos esse valor em buffer por 15 minutos por vez. Por fim, queremos que a hora atual exibida na página seja sempre a hora exata em que a página foi acessada.
Depois de declarar a biblioteca de tags na página inicial, primeiro geramos a data atual diretamente sem buffer:
agora é: <%=new java.util.Date()%>
Em seguida, queremos exibir uma lista daqueles que serão Leilões que terminam no curto prazo:
<cache:cache> <ul> <% // Construa um Iterador contendo os leilões mais recentes Leilões do Iterador = .... while (auctions.hasMore()) { Leilão de leilão = (Leilão) leilões .next(); %><li><%=leilão%></li%< } %> </ul> </cache:cache>