Estratégias de Cache para Streaming de Vídeo
O Papel do Cache no Streaming
O cache é uma tecnologia fundamental para melhorar o desempenho do streaming e reduzir custos de largura de banda. Uma estratégia de cache bem projetada pode reduzir significativamente a carga no servidor de origem, melhorar a fluidez da reprodução e reduzir custos de CDN.
Arquitetura de Cache em Múltiplas Camadas
Uma arquitetura típica de cache para streaming inclui três camadas: cache do navegador, cache de borda da CDN e cache intermediário da CDN. O cache do navegador fica no dispositivo do usuário, o cache de borda da CDN é o mais próximo do usuário e o cache intermediário conecta os nós de borda ao servidor de origem.
Arquivos de playlist M3U8 precisam de durações de cache curtas (tipicamente 2–10 segundos) para garantir atualizações oportunas. Arquivos de segmento TS podem ter durações de cache muito mais longas (tipicamente 24+ horas), pois o conteúdo dos segmentos não muda.
Estratégias de Controle de Cache
Cabeçalhos HTTP de cache são o principal meio de controlar o comportamento do cache. A diretiva Cache-Control max-age define o tempo de expiração do cache, enquanto s-maxage controla especificamente o tempo de cache da CDN. Para cenários ao vivo, playlists usam no-cache ou max-age curto, enquanto segmentos usam max-age longo.
Prefetching é uma estratégia proativa de cache onde o player solicita os próximos segmentos enquanto reproduz o atual, garantindo que os segmentos já estejam em cache na borda da CDN quando necessários.
Invalidação e Atualização de Cache
Quando o conteúdo do vídeo é atualizado, os caches antigos precisam ser invalidados. Métodos comuns incluem: URLs versionadas (adicionando números de versão às URLs), limpeza ativa de caches da CDN e uso de durações curtas de cache para deixar os caches expirarem naturalmente.
Para conteúdo sob demanda que não muda, você pode definir durações de cache extremamente longas ou até cache permanente. Para conteúdo ao vivo, os caches de playlist precisam de atualizações mais frequentes.