Como implementar cache HLS para entrega de streaming ao vivo
A Plataforma de Edge da Azion permite que você entregue conteúdo de streaming ao vivo no formato HLS, capacitando-lhe a autoprovisionar e configurar suas política de cache facilmente. Este guia abrange o passo a passo para implementar o cache HLS, gerenciando o cache de chunks e playlists e configurando regras no Rules Engine.
Pré-requisitos
- Uma edge application existente na Azion, ou crie uma nova.
- Um domínio associado à edge application.
- Tiered Cache habilitado em sua conta.
Implemente políticas de cache HLS
Para implementar políticas de cache HLS na edge application, siga os passos explicados embaixo.
Neste exemplo, uma edge application e um domínio vinculado a ela já foram previamente criados.
Crie uma política de cache para os chunks
Primeiro, você deve criar uma política de cache para os chunks:
- Abra a Azion CLI no seu terminal.
- Obtenha os detalhes de uma aplicação edge existente usando o comando list:
azion list edge-application --details
- Habilite o Tiered Cache para sua application:
$ azion update edge-application --application-id 1234 --l2-caching true
- Crie uma origem:
$ azion create origin --application-id 1234 --name "origin-edge" --origin-type single_origin --addresses "example.com" --host-header "example.com"
- Configure a política de cache para os chunk:
$ azion create cache-setting --application-id 1234 --name "chunks-policy" --browser-cache-settings "override" --browser-cache-settings-maximum-ttl 0 --cdn-cache-settings "override" --cnd-cache-settings-maximum-ttl 60
- Defina os comportamentos de Advanced Cache Key de acordo com suas necessidades. Verifique as flags opcionais para o comando create.
- A recomendação é selecionar Content does not vary, para Query String and/or Cookies, conforme suas necessidades.
- Acesse o Azion Console.
- Vá para Products menu > Edge Application.
- Selecione sua aplicação.
- Abra a aba Cache Settings e clique no botão + Cache Setting para criar a nova política de cache:
- Dê um nome único.
- Na seção Cache Expiration Policies:
- Para Browser Cache Settings, selecione Override Cache Setting e defina um Maximum TTL de
0
. - Para Edge Cache Settings, selecione Override Cache Setting e defina um Maximum TTL de
60
.
- Para Browser Cache Settings, selecione Override Cache Setting e defina um Maximum TTL de
- Ative o interruptor do Tiered Cache.
- Na seção Advanced Cache Key, defina o comportamento da sua aplicação em relação à segmentação de cache dos objetos.
- A recomendação é selecionar Content does not vary, para Query String and/or Cookies, conforme suas necessidades.
- Clique no botão Save.
- Acesse o Real-Time Manager.
- Vá para Products menu > Edge Application.
- Selecione sua aplicação.
- Abra a aba Cache Settings e clique no botão Add Cache Settings para criar a nova política de cache:
- Dê um nome único.
- Na seção Expiration Settings:
- Para Browser Cache Settings, selecione Override Cache Setting e defina um Maximum TTL de
0
. - Para CDN Cache Settings, selecione Override Cache Setting e defina um Maximum TTL de
60
.
- Para Browser Cache Settings, selecione Override Cache Setting e defina um Maximum TTL de
- Ative o interruptor do Tiered Cache.
- Na seção Advanced Cache Key section, defina o comportamento da sua aplicação em relação à segmentação de cache dos objetos.
- A recomendação é selecionar Content does not vary, para Query String and/or Cookies, conforme suas necessidades.
- Clique no botão Save.
Crie uma política de cache para a playlist
Agora configure a política de cache para a playlist: $ azion create cache-setting --application-id 1234 --name "playlist-policy" --browser-cache-settings "override" --browser-cache-settings-maximum-ttl 0 --cdn-cache-settings "override" --cnd-cache-settings-maximum-ttl 5
- Defina os comportamentos de Advanced Cache Key de acordo com suas necessidades. Verifique as flags opcionais para o comando create.
- A recomendação é selecionar Content does not vary, para Query String and/or Cookies, conforme suas necessidades.
Ainda na aba Cache Settings:
- Clique o botão + Cache Setting de novo para criar a nova política de cache para a playlist:
- Dê um nome único.
- Na seção Cache Expiration Policies:
- Para Browser Cache Settings, selecione Override Cache Setting e defina um Maximum TTL de
0
. - Para Edge Cache Settings, selecione Override Cache Setting e defina um Maximum TTL de
5
.
- Para Browser Cache Settings, selecione Override Cache Setting e defina um Maximum TTL de
- Ative o interruptor do Tiered Cache.
- Na seção Advanced Cache Key, defina o comportamento da sua aplicação em relação à segmentação de cache dos objetos.
- A recomendação é selecionar Content does not vary, para Query String and/or Cookies, conforme suas necessidades.
- Clique no botão Save.
Ainda na aba Cache Settings:
- Clique o botão Add Cache Settings de novo para criar a nova política de cache para a playlist:
- Dê um nome único.
- Na seção Cache Expiration Policies:
- Para Browser Cache Settings, selecione Override Cache Setting e defina um Maximum TTL de
0
. - Para Edge Cache Settings, selecione Override Cache Setting e defina um Maximum TTL de
5
.
- Para Browser Cache Settings, selecione Override Cache Setting e defina um Maximum TTL de
- Ative o interruptor do Tiered Cache.
- Na seção Advanced Cache Key, defina o comportamento da sua aplicação em relação à segmentação de cache dos objetos.
- A recomendação é selecionar Content does not vary, para Query String and/or Cookies, conforme suas necessidades.
- Clique no botão Save.
Crie regras no Rules Engine
- Primeiro, crie uma regra para os chunks:
$ azion create rules-engine --application-id 1234 --phase "request" --file ./chunks-rule.json
No arquivo chunks-rule.json
, inclua:
{ "name": "chunks-rule", "description": "This is a description for your chunks rule", "criteria": [ [ { "conditional": "if", "variable": "${uri}", "operator": "matches", "input_value": ".\*.ts" } ] ], "behaviors": [ { "name": "set_cache_policy", "target": "chunks-policy" } ]
}
- Logo, crie uma regra para a playlist:
$ azion create rules-engine --application-id 1234 --phase "request" --file ./playlist-rule.json
No arquivo playlist-rule.json
, inclua:
{ "name": "playlist-cache-rule", "description": "This is a description for your playlist rule", "criteria": [ [ { "conditional": "if", "variable": "${uri}", "operator": "matches", "input_value": "\*.m3u8" } ] ], "behaviors": [ { "name": "set_cache_policy", "target": "playlist-policy" } ]
}
Ainda na página da aplicação, abra a aba Rules Engine:
Primeiro, crie uma regra para os chunks:
- Clique no botão + Rule button.
- Dê um nome e uma descrição (opcional) à sua regra.
- Selecione a opção Request Phase.
- Em Criteria, defina
if ${uri}
matches.\*.ts
. - En Behaviors, selecione Set Cache Policy e adicione a política para os chunks que você criou no passo anterior.
- Clique no botão Save.
Agora, crie uma regra para a playlist:
- Clique no botão + Rule.
- Dê um nome e uma descrição (opcional) à sua regra.
- Selecione a opção Request Phase.
- Em Criteria, defina
if ${uri}
matches\*.m3u8
. - Em Behaviors, selecione Set Cache Policy e adicione a política para a playlist que você criou no passo anterior.
- Clique no botão Save.
Ainda na página da aplicação, abra a aba Rules Engine:
Primeiro, crie uma regra para os chunks:
- Clique no botão New Rule button e selecione a opção Request Phase.
- Dê um nome e uma descrição (opcional) à sua regra.
- Em Criteria, defina
if ${uri}
matches.\*.ts
. - En Behaviors, selecione Set Cache Policy e adicione a política para os chunks que você criou no passo anterior.
- Clique no botão Save.
Agora, crie uma regra para a playlist:
- Clique no botão New Rule button e selecione a opção Request Phase.
- Dê um nome e uma descrição (opcional) à sua regra.
- Em Criteria, defina
if ${uri}
matches\*.m3u8
. - Em Behaviors, selecione Set Cache Policy e adicione a política para a playlist que você criou no passo anterior.
- Clique no botão Save.
Pronto! Agora você pode configurar sua fonte e codificador apontando para a Azion e transmitir seu conteúdo, implementando o cache HLS.
Consulte a arquitetura de Live Streaming Delivery