{"id":30883396,"url":"https://github.com/globocom/globo-live-cache","last_synced_at":"2025-09-08T09:45:25.095Z","repository":{"id":19818249,"uuid":"23078946","full_name":"globocom/Globo-Live-Cache","owner":"globocom","description":"Configuração de caching de vídeos ao vivo da Globo.com","archived":false,"fork":false,"pushed_at":"2017-11-06T16:28:51.000Z","size":91,"stargazers_count":9,"open_issues_count":0,"forks_count":4,"subscribers_count":87,"default_branch":"master","last_synced_at":"2025-04-06T08:36:37.246Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/globocom.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-08-18T16:48:30.000Z","updated_at":"2017-11-07T15:50:03.000Z","dependencies_parsed_at":"2022-08-25T21:40:49.010Z","dependency_job_id":null,"html_url":"https://github.com/globocom/Globo-Live-Cache","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/globocom/Globo-Live-Cache","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/globocom%2FGlobo-Live-Cache","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/globocom%2FGlobo-Live-Cache/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/globocom%2FGlobo-Live-Cache/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/globocom%2FGlobo-Live-Cache/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/globocom","download_url":"https://codeload.github.com/globocom/Globo-Live-Cache/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/globocom%2FGlobo-Live-Cache/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274166945,"owners_count":25233959,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-08T02:00:09.813Z","response_time":121,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-09-08T09:45:21.599Z","updated_at":"2025-09-08T09:45:25.078Z","avatar_url":"https://github.com/globocom.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"```\nATENÇÃO: Esta documentação está deprecated, desde que adotamos SSL na entrega de vídeos. Estamos \nmantendo-a no ar somente por razões históricas. NÃO FUNCIONA. Está em nosso roadmap a criação\nde um novo projeto focado em oferecer cache em provedores, stay tunned :-)\n```\n\n![Project logo](https://raw.githubusercontent.com/globocom/Globo-Live-Cache/master/logo.png)\n\n#Introdução\n\nA documentação a seguir descreve o que fazer para _cachear_ vídeos ao vivo da Globo.com.\n\n__A entrega de vídeo ao vivo da Globo.com usa o protocolo HLS de acordo com a *RFC-2616* do HTTP 1.1:\n [seções 13](http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html) e\n [14](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9). Portanto, basta que seu servidor de proxy seja compatível com o padrão para que o _cache_ seja efetivo.__\n\n_Cache_ é o mecanismo para armazenamento temporário de objetos, neste caso, pedaços de vídeos. Uma definição mais formal e completa sobre _web-caching_ pode ser encontrada na [wikipedia](http://pt.wikipedia.org/wiki/Web_cache).\n\n__Web cache é um armazenamento temporário no disco rígido de páginas web, imagens e outros documentos utilizando técnicas de cache para reduzir o uso largura de banda disponível, aumentar a velocidade do acesso, entre outras vantagens.__\n\n#Motivações para uso\n\nA correta utilização de um _cache_ resulta em:\n\n  - Economia de banda para ambos lados. \u003csup\u003e[1]\u003c/sup\u003e\n  - Dimuição do atraso percebido. \u003csup\u003e[1]\u003c/sup\u003e\n  - Melhoria da experiência do usuário, principalmente em momentos de pico.\n\n#Funcionamento\n\nBasicamente, quando um usuário atrás de um proxy configurado acessa um vídeo, ele realiza várias requisições _http_, possibilitando ao _proxy_ armazenar respostas para requisições idênticas, evitando o tráfego de saída para um arquivo anteriormente requisitado.\n\nUm possível fluxo para exemplificar o funcionamento (USR1 e USR2 são dois usuários distintos na rede, PROXY um servidor proxy):\n```\n1. USR1 solicita vídeo 23.ts ao PROXY\n2. PROXY ainda não tem cache para objeto 23.ts\n3. PROXY solicita vídeo 23.ts a GLOBO.COM\n4. PROXY armazena resposta da globo e atende USR1\n5. USR2 solicita pedaço de vídeo 23.ts ao PROXY\n6. PROXY responde diretamente ao USR2\n```\n\n#Implementação\n\nPara implementar um _proxy_ você pode instalar o [Squid](http://www.squid-cache.org/). Instruções de instalação podem ser encontradas em seu [site oficial](http://wiki.squid-cache.org/SquidFaq/InstallingSquid).\n\nNa instalação padrão, o Squid\u003csup\u003e2\u003c/sup\u003e já faz _caching_ baseado no cabeçalho das respostas, o que já atende aos vídeos ao vivo da Globo.com. Um exemplo de resposta pode ser visto abaixo:\n\n```\n\u003c HTTP/1.0 200 OK\n\u003c Server: nginx\n\u003c Date: Fri, 15 Aug 2014 19:06:01 GMT\n\u003c Content-Type: video/mp2t\n\u003c Content-Length: 122200\n\u003c Expires: Fri, 15 Aug 2014 22:06:01 GMT\n\u003c Cache-Control: public, max-age=10800\n\u003c Via: 1.0 localhost (squid/3.1.19)\n\u003c Connection: keep-alive\n```\n\nNeste caso, o Squid vai seguir as regras do cabeçalho `Cache-Control:public, max-age=10800` que informa que este recurso pode ser _cacheado_ e por quanto tempo.\n\n```\nUma observação importante é que nem todos os vídeos ao vivo da Globo.com são cacheáveis.\n```\n\n##Considerações\n\n###O que deve ser _cacheado_?\n\nAs respostas do domínio `*.glbvid.com` e com extensão `ts`, mas **sempre respeitando os cabeçalhos**.\n\n###O que não deve ser _cacheado_?\n\nOs arquivos terminados com a extensão `m3u8` e `bin`. Fazer _caching_ desses arquivos pode degradar a experiência do usuário.\n\n# Caso de Uso: Squid\n\n## Requisitos\n- [VirtualBox instalado](https://www.virtualbox.org/wiki/Downloads)\n- [Vagrant instalado](http://www.vagrantup.com/downloads.html)\n- [Git instalado](http://git-scm.com/downloads)\n\nExecute os seguintes comandos:\n\n```bash\n$ git clone https://github.com/globocom/Globo-Live-Cache\n$ cd Globo-Live-Cache\n$ vagrant up\n```\n\nO comando `vagrant up` vai provisionar uma máquina virtual devidamente configurada com Squid3.\n\n```\nNesta configuracão, todos os usuários tem acesso irrestrito.\n```\n\nDepois, configure seu _browser_ para apontar para o _proxy_ 192.168.33.10:3128. Caso queira verificar seu funcionamento:\n\n```bash\n$ vagrant ssh\nvagrant@precise32: $ sudo tail -f /var/log/squid3/*log\n```\n\nVale ressaltar que é possível exportar a máquina virtual do _Vagrant_ para provedores _cloud_, como por exemplo: [Amazon EC2](http://www.iheavy.com/2014/01/16/how-to-deploy-on-amazon-ec2-with-vagrant/) e [Digital Ocean.](https://www.digitalocean.com/community/tutorials/how-to-use-digitalocean-as-your-provider-in-vagrant-on-an-ubuntu-12-10-vps)\n\n#Conclusão\n\nEm testes realizados, percebemos que quando 10 usuários utilizam o _proxy_ para acessar vídeos ao vivo da Globo.com, o ganho é de aproximadamente 90% de banda sobre vídeos. Aumentando o número de usuários para 1000, o ganho chega a 99,9%. Assim, se considerarmos um arquivo de vídeo no _bitrate_ mais alto, o ganho pode ser em torno de 1Gb por pedaço de vídeo.\n\nOs números acima são estimativas feitas a partir de testes com [ab](http://httpd.apache.org/docs/2.2/programs/ab.html) simulando usuários simultâneos com conexões para o maior bitrate.\n\nNotas\n=========\n- [1]: [Wikipedia - Web cache](http://en.wikipedia.org/wiki/Web_cache)\n- [2]: *Instalação padrão do squid3, considerando as devidas permissões\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglobocom%2Fglobo-live-cache","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fglobocom%2Fglobo-live-cache","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglobocom%2Fglobo-live-cache/lists"}