O Que É uma Cache Key?
Uma cache key é a impressão digital que o CI usa para encontrar um cache salvo. Acerte-a e você dá hit com frequência sem nunca servir dados obsoletos.
Toda consulta de cache é uma comparação de strings. A cache key codifica de que o conteúdo em cache depende, de modo que uma correspondência exata significa "este cache ainda é válido". Projetar keys é a habilidade central do caching eficaz.
Uma boa key deriva do conteúdo
Baseie a key em um hash das entradas que mudam a saída - na maioria das vezes o lockfile. Exemplo: deps-${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}. Quando o lockfile muda, a key muda, e um cache novo é salvo.
Restore keys e correspondências parciais
Muitos sistemas suportam "restore keys" de fallback - prefixos usados quando a key exata dá miss. Um fallback para deps-${{ runner.os }}- restaura o cache compatível mais recente e reinstala apenas o que mudou, em vez de começar vazio.
Inclua as dimensões certas
Uma key deve capturar tudo que muda o conteúdo em cache: o OS, a arquitetura da CPU, a versão da linguagem e o lockfile. Omita uma e você pode restaurar um cache construído para uma plataforma diferente, o que falha de maneiras confusas.
Erros comuns
- Uma key ampla demais (sem hash do lockfile) serve dependências obsoletas.
- Uma key específica demais (que inclui o commit SHA) nunca dá hit.
- Esquecer o OS ou a arquitetura restaura binários incompatíveis.
Verificando se as suas keys funcionam
Verifique os logs de CI por linhas de "cache hit" versus "cache miss". Uma key que sempre dá miss em dependências inalteradas é específica demais; uma key que dá hit após uma mudança de dependência é ampla demais e está servindo dados obsoletos.
Principais conclusões
- Uma cache key registra a impressão digital do que o cache depende, geralmente o lockfile.
- Restore keys dão um hit parcial útil quando a key exata dá miss.
- Ampla demais serve dados obsoletos; específica demais nunca dá hit.