A Cache API permite armazenar dados em cache nos nós de borda, garantindo respostas mais rápidas em solicitações subsequentes. configure a duração e o tamanho do cache para definir as políticas de armazenamento.
Como funciona
A Cache API nativa do Edge Routines (ER) armazena em cache os dados processados pelo ER ou buscados no servidor de origem no ESA, permitindo que outras solicitações no mesmo nó os reutilizem. Essa abordagem reduz a repetição de processamento e as solicitações de rede. A figura a seguir ilustra a relação entre o ER e o cache do ESA:
Padrão da API
A Cache API segue a interface padrão Cache sempre que possível. Contudo, como o Edge Routines reutiliza o mecanismo de cache existente do ESA, a semântica não é totalmente idêntica.
Definição da API
cache.put(request/string, response)
-
Armazena um objeto Response no Cache.
Se a operação put for bem-sucedida, resolve para undefined.
Se o mecanismo de Cache falhar, rejeita com uma exceção de erro.
Se a cota do mecanismo de Cache for excedida, rejeita com uma exceção de erro.
A chave do cache é definida como a URL do objeto de requisição ou uma string de URL. (Utilize URL http. No momento, o mecanismo de Cache do ESA não oferece suporte a URL https.)
Trata-se de uma função assíncrona. Utilize await para garantir a conclusão da operação put .
defina o cabeçalho cache-control no objeto Response para configurar o TTL do cache (o cabeçalho cache-control segue os padrões de cache).
cache.get(request/string)
Recupera um objeto Response com a requisição/string especificada como chave (se o objeto não existir, resolve para undefined).
Trata-se de uma função assíncrona. Utilize await para garantir a conclusão da operação get.
A operação get pode não retornar o objeto recém-armazenado, pois o cache utiliza o algoritmo LRU e não garante a recuperação contínua do objeto em cache.
cache.delete(request/string)
-
exclua um objeto Response com a chave especificada.
Se a exclusão for bem-sucedida, resolve para true.
Se a exclusão falhar, resolve para false.
Trata-se de uma função assíncrona. Utilize await para garantir a conclusão da operação de exclusão.
Limites de uso
Todas as operações da Cache API atuam como sub-requisições e compartilham o limite de sub-requisições do ER. Por padrão, uma única requisição do ER aceita no máximo 32 sub-requisições fetch (esse valor pode ser alterado após a comercialização do ER). Como as operações da Cache API dividem esse limite com o fetch, a soma total de operações cache.put + cache.get + cache.delete + fetch em um único contexto de requisição não pode ultrapassar 32.
-
As operações cache.put, cache.get e cache.delete possuem controle de concorrência. Para uma mesma URL, se uma requisição executar um get enquanto outra executa um delete, a operação poderá retornar um status pendente, já que múltiplas requisições simultâneas estarão modificando a mesma chave. Nesse caso, aguarde e tente novamente.
NotaQuando as operações cache.put, cache.get ou cache.delete rejeitam para true, isso indica que a operação está sujeita ao controle de concorrência.
Atualização de cache
Atualmente, a Cache API não oferece suporte à atualização ativa de cache. especifique uma duração de cache adequada por meio do parâmetro TTL ao chamar Cache.put().