API: serialização rápida
O curso examina como as views Jbuilder de uma aplicação Rails serializam JSON e quando compensa guardar essa saída em cache. Percorre os dois ramos do array!, a forma com bloco e a forma com partial e cached:, e mostra as leituras de cache em lote que a segunda dispara. Trata do json.cache!, que usa o Rails.cache, e do render json:, que pula o ActionView e o Jbuilder. Compara o cache do HTML da aplicação e pesa tudo contra o limite de oito resultados por tipo da busca.
O que você vai aprender
- ✓Os ramos com bloco e com partial do array! no Jbuilder
- ✓Leituras de cache em lote pelo ActionView::CollectionRenderer com cached:
- ✓Como o json.cache! lê e grava no Rails.cache
- ✓O que o render json: pula em relação a uma view Jbuilder
- ✓Cache de chave única e de coleções no HTML da aplicação
- ✓Avaliar o cache pelo tamanho da view de busca
As views de array desta aplicação tomam o caminho simples
O curso de nível Júnior "Desenvolvimento de API: Jbuilder" leu as views .json.jbuilder desta aplicação. Várias montam arrays: a busca do catálogo por trás da paleta de comandos, e as listas de alunos, certificados e atividade da API de parceiros. A view da busca é a mais simples:
Ler a aula completa grátis →Currículo
7 aulasAs views de array desta aplicação tomam o caminho simples
Segue a chamada com bloco da busca até o array! e mostra por que esse ramo nunca lê o cached:.
O caminho de partial-e-cache que esta aplicação nunca usou
Roda o array! com partial:, as: e cached: nos dados de busca, com uma leitura e uma gravação em lote.
json.cache!: o mesmo cache que esta aplicação já confia
Mostra que o json.cache! usa o mesmo Rails.cache do HTML da aplicação, com falta, gravação e acerto.
render json: pula o Jbuilder e o ActionView por completo
Explica como o render json: chama to_json diretamente e por que a aplicação o restringe a hashes pequenos.
Onde o HTML desta aplicação já usa cache em lote
Compara os quatro caches de chave única do HTML com as três renderizações de coleção que usam cached:.
Alguma coisa disso vale a pena na escala real desta aplicação?
Pesa o cache da view de busca, limitada a oito resultados por tipo, contra suas duas queries no Postgres.
Juntando tudo: quais views precisam de cache
Retoma as conclusões do curso e apresenta um desafio em Ruby simples que modela leituras de cache em lote.