Usando o Serviço de Cache Dinâmico
Use o serviço de cache dinâmico para melhorar o desempenho do aplicativo armazenando em cache a saída de servlets, serviços da Web e comandos do WebSphere Application Server na memória.
Antes de Iniciar
Sobre Esta Tarefa
Procedimento
- Clique em Servidores > Tipos de Servidor > Servidores do WebSphere® application > server_name > Serviços de contêiner > Serviço de cache dinâmico.
- Configure a instância de cache padrão ou siga os links para ativar o cache de servlet ou portlet. Consulte o artigo Configurações de Serviço de Cache Dinâmico para obter informações adicionais sobre as configurações de cache padrão.
Exemplo
Este exemplo reúne todas as etapas para configurar o serviço de cache dinâmico com o arquivo cachespec.xml, mostrando o uso das regras de geração de ID de cache, IDs de dependência e regras de invalidação.
Suponha que um servlet seja utilizado para gerenciar um site simples de notícias. Esse servlet
utiliza o parâmetro de consulta "action" para determinar se o pedido está sendo utilizado para
visualizar as notícias (parâmetro de consulta "view") ou atualizar notícias (parâmetro de consulta "update") (utilizado pelo administrador). Outro parâmetro
de consulta "category" seleciona a categoria de notícias. Suponha que esse
site suporte um layout personalizado opcional, o qual é armazenado na sessão do usuário
utilizando o nome de atributo "layout". Eis alguns
exemplos de pedidos de URL para esse servlet:
- http://yourhost/yourwebapp/newscontroller?action=view&category=sports (Retorna uma página de notícias para a categoria sports.)
- http://yourhost/yourwebapp/newscontroller?action=view&category=money (Retorna uma página de notícias para a categoria money)
- http://yourhost/yourwebapp/newscontroller?action=update&category=fashion (Permite que o administrador atualize notícias na categoria fashion)
As etapas a seguir ilustram como configurar o serviço de cache dinâmico para esse exemplo com o arquivo cachespec.xml:
- Defina os elementos <cache-entry> necessários para identificar o
servlet. Nesse caso, o URI do servlet é "newscontroller", para que esse seja
o elemento <name> da entrada de cache. Como esse exemplo armazena em cache um servlet ou arquivos JSP (JavaServer
Pages), a classe da entrada de cache é "servlet".
<cache-entry> <name> /newscontroller </name> <class>servlet </class> </cache-entry>
- Defina as regras de geração de ID de cache. Esse servlet é armazenado em cache apenas quando action=view,
de modo que um componente do ID de cache será o parâmetro "action" quando o valor
for igual a "view". A categoria de notícias também é uma parte essencial
do ID de cache. O atributo opcional session para o layout do usuário
é incluído no ID de cache. A entrada de cache agora é:
<cache-entry> <name> /newscontroller </name> <class>servlet </class> <cache-id> <component id="action" type="parameter"> <value>view</value> <required>true</required> </component> <component id="category" type="parameter"> <required>true</required> </component> <component id="layout" type="session"> <required>false</required> </component> </cache-id> </cache-entry>
- Defina regras de ID de dependência. Para esse servlet, é incluído um ID
de dependência para a categoria. Posteriormente, quando a categoria for invalidada devido a um evento
de atualização, todas as visualizações dessa categoria de notícias serão invalidadas.
A seguir
está um exemplo da entrada de cache após incluir o ID de dependência:
<cache-entry> <name>newscontroller </name> <class>servlet </class> <cache-id> <component id="action" type="parameter"> <value>view</value> <required>true</required> </component> <component id="category" type="parameter"> <required>true</required> </component> <component id="layout" type="session"> <required>false</required> </component> </cache-id> <dependency-id>category <component id="category" type="parameter"> <required>true</required> </component> </dependency-id> </cache-entry>
- Defina regras de invalidação. Como um ID da dependência de categoria já está definido,
defina uma regra de invalidação para invalidar a categoria quando action=update. Para incorporar a lógica condicional, incluiremos componentes "ignore-value"
na regra de invalidação. Esses componentes não são incluídos na saída do ID de
invalidação, mas apenas determinam se o ID de invalidação será ou não criado e executado. O cache-entry final agora é semelhante a este:
<cache-entry> <name>newscontroller </name> <class>servlet </class> <cache-id> <component id="action" type="parameter"> <value>view</value> <required>true</required> </component> <component id="category" type="parameter"> <required>true</required> </component> <component id="layout" type="session"> <required>false</required> </component> </cache-id> <dependency-id>category <component id="category" type="parameter"> <required>true</required> </component> </dependency-id> <invalidation>category <component id="action" type="parameter" ignore-value="true"> <value>update</value> <required>true</required> </component> <component id="category" type="parameter"> <required>true</required> </component> </invalidation> </cache-entry>