Histórico da Página
...
Implementada a biblioteca "ts-cacheable" para manter o cache das requisições no LocalStorage. Agora é possível definir quando fazemos as requisições se elas serão guardadas no Cache ou não. O Cacheable é utilizado somente para requisições GET, visto que as demais não necessitam guardar informações
Algumas regras foram criadas:
- O sistema irá guardar a resposta da requisição no LocalStorage obedecendo o tempo desde a execução.
- Atualmente existem 2 tempos de Cache: O Diário (DailyCache) que dura por 24 horas desde o tempo da execução e o Temporário (TempCache) que dura 30 minutos desde o tempo de execução.
- Além do tempo, o Cache necessita que uma chave seja criada para reconhecer se o que já está no Cache é reutilizável de modo a evitar que seja feita a chamada para o BackEnd.
- A chave é composta por:
- Host: Host da requisição - Ex: /juri/ ou url do Mingle;
- EndpointClass: Classe do Endpoint - Ex: FWMODEL ou JURLEGALPROCESS;
- URI: URI do endpoint - Ex: JURA095 ou SearchProcesSearchProcess;
- QueryParams: Parâmetros opcionais utilizados na requisição - Ex: FIRSTLEVEL ou EMPTYFIELD;
- Valor Filtrado: Filtro informado nos Adapters para quando utilizamos o que o usuário digitou ou o ID que foi definido ao abrir a tela editando.
- A chave é composta por:
- Exemplo:
- Para preencher o campo de Tipo de envolvimento com o Mingle ativo o sistema irá preencher a chave da seguinte forma:
Host EndpointClass URI QueryParams ValorFiltrado URL do Mingle FWModel JURA009 FirstLevel: False
EmptyField: True
VirtualField: True
""
- Quando o usuário digitar "Aut" a chave ficará da seguinte forma:
Host EndpointClass URI QueryParams ValorFiltrado URL do Mingle FWModel JURA009 FirstLevel: False
EmptyField: True
VirtualField: True
"Aut" - Com isso a chave será diferente, o que indica para o sistema que ele precisa realizar a chamada HTTP para o Protheus para buscar o novo response.
- Se o usuário apagar o Aut a chave ficará da seguinte forma:
Host EndpointClass URI QueryParams ValorFiltrado URL do Mingle FWModel JURA009 FirstLevel: False
EmptyField: True
VirtualField: True
"" - Com isso a chave ficará igual a que existe já em Cache. Se não passou o tempo de expiração do Cache o sistema irá reaproveitar o response antigo invés de refazer a consulta no Backend.
- Para preencher o campo de Tipo de envolvimento com o Mingle ativo o sistema irá preencher a chave da seguinte forma:
- O sistema irá guardar a resposta da requisição no LocalStorage obedecendo o tempo desde a execução.
...
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
async getDetailProcess(nCarregaLista: number = 0) { this.fwmodel.restore(); this.fwmodel.setChave(btoa(atob(this.filial) + this.cajuri)) this.fwmodel.setModelo('JURA095'); this.fwmodel.setFirstLevel(false); this.fwmodel.setCampoVirtual(true); this.fwmodel.setCacheType(ETypeCache.TEMP_CACHE) // Para o Cache temporário utilizar o ETypeCache.TEMP_CACHE. // Para o Cache Diário utilizar o ETypeCache.DAILY_CACHE this.fwmodel.get('getDetailProcess').subscribe(data => { // Código } } |
Vale lembrar que o Cacheable previne a requisição de ser feita caso já tenha sido feita anteriormente, ou seja, se houver alguma alteração nos dados da requisição, por exemplo, a alteração da Área do Processo, o Cacheable não irá atualizar o cache sozinho. Para resolver isso, ao realizar qualquer atualização de dados que estão no Cache temos que excluir o cache da memória manualmente.
Para remover o Cache foi criada uma função que recebe os seguintes parâmetros:
- TipoCache: Em qual Tipo de cache será realizada a busca
- ListEndpoints: Array de String com os Endpoints a serem pesquisados.
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
submitDetalhes() {
this.fwmodel.restore();
this.fwmodel.setModelo('JURA095');
this.fwmodel.put(this.pk, this.setBodyDetalhes(), 'Alteração da consulta').subscribe(
data => {
if (data.hasOwnProperty('models')) {
this.poNotification.success(this.litAltConsulta.detalhes.successAlt);
this.getDetailConsulta();
}
},
error => {},
()=>{
// Irá remover do Cacheable o cache da JURA095 e da requisição tlprocess/detail que é utilizada no resumo do processo
HttpJuriService.removeFromCache(ETypeCache.TEMP_CACHE, ["JURA095/" + this.pk, 'tlprocess/detail/' + atob(this.filial) + '/' + this.cajuri])
this.isLoadingDetalhes = false;
}
);
} |
Rotinas que estão com Cache:
Rotina | Tipo de Cache aplicado |
---|---|
Consulta de Filial | Cache diário |
Tipo de Envolvimento | Cache diário |
Alteração de Processo Consultivo | Cache temporário |
Resumo do Processo Consultivo | Cache temporário |
Alteração de Contrato | Cache temporário |
Resumo de Contrato | Cache temporário |
Consulta de Processo Contencioso | Cache temporário |
Alteração de Processo Contencioso | Cache temporário |
Encerramento de processo | Cache temporário |
E-Social | Cache temporário |
Listagem de Tipo de Assunto Jurídico | Cache diário |
Status de Follow-up | Cache temporário |
Breadcrumb - Busca de processo | Cache temporário |
Relacionamento | Cache temporário |
Tipo de Follow-up | Cache diário |
Preposto do Follow-up | Cache diário |
04. DEMAIS INFORMAÇÕES
Não há.
05. ASSUNTOS RELACIONADOS
- Não há.
Templatedocumentos |
---|