Problema de cache de intervalo de bytes Nginx com o Safari

1

Estou tendo alguns problemas com o cache de intervalo de bytes MP4 e com os navegadores da Apple. Eu tenho um nó de cache que agarra o conteúdo de um nó de back-end e armazena em cache e, em seguida, serve para os usuários. Isso é feito usando nginx proxy_pass junto com o cache nginx.

Descobri que muitos navegadores primeiro solicitam o vídeo inteiro (intervalo de bytes 0-infinito) primeiro e, em seguida, solicitam blocos posteriormente. Isso foi um problema porque faria com que o nó do cache baixasse o vídeo inteiro do backend de uma só vez. Para corrigir isso, o nó de cache dividiu as solicitações em blocos de 10 M, independentemente do tamanho do intervalo de bytes solicitado. Isso funcionou para quase todos os navegadores, exceto o Safari. Tanto para o Safari quanto para o Safari no iOS, o Safari lança um erro de mídia quase instantaneamente corrompido. O erro é lançado assim que a solicitação é enviada com o intervalo de bytes configurado como o arquivo completo. Se não reescrevermos a solicitação, ela funcionará bem no Safari, mas a porta do nó do cache ficará saturada quase o tempo todo, porque quando alguém inicia o streaming de um arquivo, o arquivo inteiro é baixado para o nó do cache, saturando o Porto. Qualquer sugestão sobre como posso consertar isso seria apreciada.

    
por user3749382 20.02.2017 / 03:07

0 respostas