Introdução ao cache da plataforma
Objetivos de aprendizagem
Após concluir esta unidade, você estará apto a:
- Descrever o que é o cache da plataforma e para que ele é usado.
- Listar os dois tipos de cache da plataforma e dar exemplos de cada um.
- Descrever partições e como utilizá-las.
O que é um cache?
Cache é um armazenamento temporário. No mundo dos computadores, cache é armazenamento temporário para dados acessados frequentemente em um banco de dados. Veja aqui uma analogia. Digamos que você é um esquilo que está procurando nozes para o jantar. São 17:00 e é hora de comer. Você vai usar as nozes armazenadas em suas bochechas (cache) ou vai voltar para a floresta e colher mais algumas das árvores (banco de dados)? Se você acessar o cache temporário de comida em suas bochechas, seu jantar estará mais próximo e você poderá comer mais rapidamente! Além disso, seu objetivo é atingido de forma mais eficiente. Um cache de dados tem vantagens semelhantes, mas para pessoas, não para esquilos.
O que é o cache da plataforma?
Cache da plataforma é uma camada de memória que armazena a sessão do Salesforce e os dados da organização para acesso posterior. Ao usar o cache da plataforma, seus aplicativos poderão ser executados mais rapidamente porque armazenam dados reutilizáveis na memória. Os aplicativos podem acessar esses dados rapidamente; eles não precisam duplicar cálculos e solicitações ao banco de dados nas transações seguintes. Resumindo: pense no cache da plataforma como RAM para seu aplicativo de nuvem.
Com o cache da plataforma, você também pode alocar espaço em cache para que alguns aplicativos ou operações não roubem capacidade dos outros. São usadas partições para distribuir o espaço. Vamos explicar partições mais tarde.
Antes de prosseguirmos
Vamos parar um instante para que você possa solicitar uma avaliação do cache da plataforma. Por padrão, sua organização Developer tem 0 MB de capacidade de cache. Você pode solicitar um cache de avaliação de 10 MB.
Para solicitar uma avaliação, acesse Configuração em sua organização Developer. Na caixa Busca rápida, digite cache e clique em Platform Cache (Cache da plataforma). Clique em Request Trial Capacity (Solicitar capacidade de avaliação) e aguarde o email que informará sobre a ativação da avaliação do cache da plataforma. A Salesforce aprova as solicitações de avaliação imediatamente, mas pode levar alguns minutos até que você receba o email.
Se você não tem uma avaliação de cache, ainda pode executar operações de cache para aprender a usá-lo. No entanto, o armazenamento em cache sofre bypass e os valores recuperados são nulos (falha de cache).
OK, agora que você solicitou uma avaliação de cache da plataforma, vamos aprender mais alguns conceitos.
Quando posso usar o cache da plataforma?
Você pode usar o cache da plataforma em seu código praticamente em qualquer lugar em que os dados são acessados repetidamente. O uso de dados em cache melhora o desempenho de seu aplicativo e é mais rápido que fazer consultas SOQL repetidamente, fazer várias chamadas de API ou fazer cálculos complexos.
Os melhores dados para armazenamento em cache são:
- Os reutilizados em uma sessão ou reutilizados por vários usuários e solicitações
- Os estáticos (que não mudam rapidamente)
- De computação ou recuperação cara
Armazenar dados que não mudam rapidamente
Use o cache para armazenar dados estáticos ou dados que não mudam com rapidez. Esses dados são inicialmente recuperados por meio de chamadas de API a terceiros, ou localmente por meio de consultas SOQL. Se os dados mudarem, armazene esses dados se os valores não precisarem ser sempre muito exatos.
Exemplos de dados estáticos:
- Itinerário de transporte público
- Itinerário do transporte da empresa
- Cabeçalhos de guia que todos os usuários veem
- Uma barra de navegação que aparece em todas as páginas do aplicativo
- O carrinho de compras de um usuário que você deseja persistir durante a sessão
- Instantâneos diários de taxas de câmbio (as taxas variam durante o dia)
Armazenar dados obtidos de cálculos complexos
Valores que sejam resultado de cálculos complexos ou consultas longas são bons candidatos ao armazenamento em cache. Exemplos desses dados:
- Total de vendas da semana passada
- Total de horas de voluntariado que os funcionários da empresa trabalharam
- Ranking de principais vendas
Para ver dicas de onde usar o cache da plataforma, verifique seu código. Por exemplo, você armazena dados de aplicativo atualmente sobrecarregando um estado de exibição do Visualforce? Esses valores armazenados são todos candidatos ao cache da plataforma.
Nem todo caso de uso é para o cache da plataforma. Por exemplo, dados que mudam muito e são em tempo real, como valores de ações em bolsa, não são bons candidatos a armazenamento em cache. Além disso, conheça as limitações do cache da plataforma. Por exemplo, se seus dados são acessados por Apex assíncrono, eles não podem ser armazenados em cache com base na sessão do usuário.
Alocações de cache por edição
O cache da plataforma está disponível para clientes com organizações Enterprise Edition e superiores. As edições a seguir vêm com algum espaço em cache padrão, mas é fato que a adição de mais cache costuma aumentar o desempenho.
- Enterprise Edition (10 MB por padrão)
- Unlimited Edition (30 MB por padrão)
- Performance Edition (30 MB por padrão)
Experimentar com cache de avaliação
Você pode comprar mais cache para sua organização. Para determinar a quantidade extra de cache a ser usado em seus aplicativos, solicite o cache de avaliação para teste. Solicite o cache de avaliação para a Professional Edition antes de comprar cache. Use o cache de avaliação em sua organização Developer Edition para desenvolver e testar seus aplicativos com o cache da plataforma. Quando sua solicitação for aprovada, você receberá 30 MB de espaço em cache de avaliação (10 MB para a Developer Edition). Se precisar de mais espaço em cache de avaliação, entre em contato com a Salesforce.
Quais são os tipos de cache da plataforma?
Existem dois tipos de cache da plataforma: cache da organização e cache da sessão.
Cache da organização
O cache da organização armazena dados de toda a organização, que todos nela podem usar. O cache da organização pode ser acessado entre sessões, solicitações e usuários e perfis da organização.
Por exemplo, os dados de previsão do tempo podem ser armazenados em cache e exibidos para contatos com base em sua localização. Ou um valor diário das taxas de câmbio pode ser armazenado em cache para uso em um aplicativo.
Cache da sessão
O cache da sessão armazena dados específicos de determinado usuário e está vinculado a uma sessão do usuário. A validade máxima de uma sessão é de 8 horas.
Por exemplo, imagine que seu aplicativo calcula a distância do local de um usuário até todos os clientes que o usuário pretende visitar no mesmo dia. A localização e as distâncias calculadas podem ser armazenadas no cache da sessão. Assim, se o usuário quiser obter essa informação novamente, as distâncias não precisarão ser recalculadas. Ou você pode ter um aplicativo que permite que os usuários personalizem a ordem da guia de navegação e reutilizem essa ordem ao visitar outras páginas no aplicativo.
Quais são os ganhos de desempenho com o uso do cache?
Você deve estar se perguntando qual é o ganho de desempenho de seu aplicativo com o uso do cache da plataforma. A recuperação dos dados do cache é mais rápida que por uma chamada de API. Comparando os tempos de recuperação de SOQL e cache, o cache também é muito mais rápido que as consultas SOQL.
O gráfico a seguir mostra os tempos de recuperação de dados por uma chamada de API e do cache em milissegundos. É fácil notar o grande ganho de desempenho quando os dados são buscados localmente pelo cache, especialmente na hora de recuperar dados em várias transações. No exemplo usado para o gráfico, o cache é centenas de vezes mais rápido que as chamadas de API. Nesse gráfico, os tempos de recuperação de cache são de apenas alguns milissegundos, mas parecem quase zero por conta da escala usada para o valor de tempo. Lembre-se de que esse gráfico é um teste de exemplo; os números podem variar para outros aplicativos.
Fazer chamadas de API para serviços externos é mais lento (1) que obter dados do cache (2).
O próximo gráfico compara tempos de recuperação de SOQL com cache da sessão e da organização. Como pode ver, SOQL é mais lento que cache. Nesse exemplo, o cache é duas vezes (ou mais) mais rápido que SOQL na recuperação de dados em uma única transação. Ao fazer recuperações em várias transações, a diferença é ainda maior. (Observe que esse gráfico é um teste de exemplo e que números podem variar para outros aplicativos.)
Obter dados por meio de consultas SOQL (1) é mais lento que obter dados de cache da sessão ou da organização (2).
O que são partições de cache?
Lembra quando mencionamos anteriormente que, com o cache da plataforma, você pode alocar espaço usando partições? Vamos falar agora sobre partições. As partições permitem alocar espaço em cache para equilibrar o uso e o desempenho entre aplicativos. Armazenar dados em cache para partições designadas faz com que o espaço em cache não seja substituído por outros aplicativos ou por dados menos importantes.
Antes de usar espaço em cache em sua organização, você precisará criar partições a fim de definir a capacidade desejada para seus aplicativos. A capacidade de cada partição é dividida entre cache da organização e cache da sessão. As alocações de cache da sessão e da organização podem ser zero, 5 MB ou mais e precisam ser números inteiros. O tamanho mínimo de uma partição, incluindo suas alocações de cache da sessão e da organização, é 5 MB. Por exemplo, digamos que sua organização tem um total de 10 MB de espaço em cache e você criou uma partição com um total de 5 MB, dos quais 5 MB são para o cache da sessão e 0 MB para o cache da organização. Ou você criou uma partição de 10 MB de espaço, com 5 MB para o cache da organização e 5 MB para o cache da sessão. A soma de todas as partições, incluindo a partição padrão, é igual à alocação total do cache da plataforma.
A imagem a seguir mostra gráficos de capacidade de cache e de alocação de partição. Neste exemplo, ainda não usamos o cache, como mostra o uso de cache de 0% (1), e duas partições foram criadas com a mesma alocação (2).
Partição padrão
Você pode definir qualquer partição como partição padrão, mas só pode ter uma partição padrão. A partição padrão permite usar sintaxe de atalho para a realização de operações de cache nela. Isso significa que você não precisa qualificar totalmente o nome da chave com o namespace e o nome da partição na hora de adicionar um par de chave-valor. Por exemplo, em vez de chamar Cache.Org.put('namespace.partition.key', 0); basta chamar Cache.Org.put('key', 0);
Na próxima unidade, você criará uma partição na Configuração para começar a usar o cache da plataforma!
Recursos
Recursos no Apex Developer Guide:
Recursos em Ajuda do Salesforce: