Contexto
O cache de avanço e retorno (bfcache) armazena um snapshot da página na memória para quando ela for restaurada do histórico de navegação. Isso acelera significativamente as navegações de retorno para a página. No entanto, algumas APIs do navegador (por exemplo, listeners de remoção) podem causar falhas no bfcache, e a página será carregada normalmente.
Como o Lighthouse detecta falhas de bfcache
Navegações independentes
No final de uma navegação independente, o Lighthouse vai sair da página e tentar restaurar a página do histórico de navegação para detectar se o bfcache está sendo usado.
Fluxos de usuários
O Lighthouse não testa ativamente o bfcache na navegação ao executar um fluxo de usuários. Isso ocorre porque a navegação para fora e de volta à página no final de cada navegação não reflete a maioria das experiências do usuário na página.
No entanto, ainda é possível testar o uso do bfcache no modo de período de tempo incluindo uma navegação de histórico como parte da jornada do usuário. Exemplo:
const flow = await startFlow(page);
// This navigation will not test the bfcache
// because it is part of a user flow.
await flow.navigate('https://example.com');
// This timespan will try to restore the page from the bfcache.
// Problems restoring from the bfcache are surfaced in this report.
await flow.startTimespan();
await page.goto('https://example2.com');
await page.goBack();
await flow.endTimespan();
Noções básicas sobre falhas do bfcache
Se a página não puder ser restaurada do bfcache por qualquer motivo, a auditoria vai falhar. O Lighthouse lista todos os motivos pelos quais o bfcache não pode ser usado, além dos frames que causaram o problema. Os motivos de falha podem ser de três tipos:
- Ação possível: você pode corrigir esses problemas para ativar o armazenamento em cache.
- Suporte pendente: o Chrome ainda não oferece suporte a esses recursos, então eles impedem o armazenamento em cache. No entanto, quando o suporte é adicionado, o Chrome remove essas limitações.
- Não é possível corrigir: não é possível corrigir esses problemas nesta página. Algo fora do controle da página impede o armazenamento em cache.