Estava lendo um texto do Steve Souders sobre a alteração da configuração padrão gzip na Fastly. Fastly é uma CDN concorrente da Akamai e tem clientes como Twitter, Shopify, The Guardian, Rakuten, etc.
Ele cita como chegaram no template padrão da configuração deles usando os dados do HTTP Archive, este é um projeto que consolida testes executados usando a versão pública do Webpagetest. Os testes são executados em mais ou menos 18 mil URLs e tem relatórios variados, por exemplo: número médio de requisições HTTP por página, crescimento do HTML nas páginas, etc.
Tanto do Steve Souders quanto no site HTTP Archive fazem referência ao Bigqueries com diversas consultas realizadas na base dados do HTTP Archive. Um texto postado no Bigqueries chamou-me a atenção, era sobre o Ranking de CDNs considerandos as páginas mais populares.
Ele considerou apenas as páginas que estavam sendo entregues por alguma CDN e não considerou todas as requisições HTTP das páginas. Usei o BigQuery do Google considerando os dados disponíveis do HTTP Archive no mês de Novembro de 2014 para responder: Quais são as CDNs mais populares ao analisar as requisições HTTP?
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
E quais foram as CDNs mais usadas naquele período?
1 2 3 4 5 6 7 8 9 10 |
|
A surpresa no ranking é o Google, porque ele seria considerado uma CDN?
Para tentar entender, outra consulta buscando os principais hostnames/domínios que estão na CDN do Google.
1 2 3 4 5 6 7 8 9 |
|
Basicamente, a CDN da Google entrega seus próprios serviços: Analytics, Adsense, Doubleclick, Youtube, etc. Os hostnames fonts.googleapis.com, ajax.googleapis.com estão relacionados a iniciativas do Goolgle de hospedar alguns frameworks javascripts e webfonts gratuitamente.
Então, o Google poderia ser considerado um fornecedor de CDN? Um pouco difícil de definir porque não existe um documento canonical (RFC) que defina CDN. A Wikipedia tem artigo sobre CDN e a primeira frase tem uma boa definição
“A content delivery network or content distribution network (CDN) is a large distributed system of servers deployed in multiple data centers across the Internet. The goal of a CDN is to serve content to end-users with high availability and high performance. CDNs serve a large fraction of the Internet content today, including web objects (text, graphics and scripts), downloadable objects (media files, software, documents), applications (e-commerce, portals), live streaming media, on-demand streaming media, and social networks.”
Se a for usado a definição da Wikipedia para CDN, pode-se afirmar que alguns serviços do Google são uma CDN. Entretanto, se descartar o Google como CDN e consideramos que as demais restantes são CDNs que seus usuários paguem para entregar o seu conteúdo. Como ficaria o ranking com as 15 mais usadas?
1 2 3 4 5 6 7 8 9 10 |
|
Dentre as acima listadas, as que tem ou tera ponto de presença no Brasil: Akamai, Cloudflare, EdgeCast, CloudFront, Fastly, MaxCDN (NetDNA), CDNetwokrs, ChinaNetCenter, Level3, Incapsula e Highwinds.
Voltando ao início e aoEu texto do Souders sobre compressão, ele propôs que habilite/configure a compressão quando as respostas HTTP tiverem :
Extensions: js css html json ico eot otf ttf
Ou
Content-Type: text/html application/x-javascript text/css application/javascript text/javascript text/plain text/xml application/json application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype application/x-font-ttf application/xml font/eot font/opentype font/otf image/svg+xml image/vnd.microsoft.icon
A configuração padrão na Akamai é:
Content-Type: text/html text/css application/x-javascript text/xml text/plain application/json text/javascript *
Fazendo consulta similar ao do Souders para saber “Quais os content-types mais mais recorrentes acima de 1 mil recorrências e que tiveram compressão habilitada?”.
1 2 3 4 5 6 7 8 |
|
Da lista, pode-se descartar alguns: application/octet-stream (formato genérico de arquivos), text/x-component (formato microsoft antigo, não mais usado), application/x-shockwave-flash, font/woff e application/x-www-form-urlencoded. Os três últimos são formatos já com compressão e fazer compressão num servidor web ou CDN é usar o processamento desnecessariamente.
Juntado as listas, a regra a ser configurado no servidor web, proxy reverso ou CDN será:
Extensions: js css html json ico eot otf ttf
Content-Type: text/html application/x-javascript text/css application/javascript text/javascript text/plain text/xml application/json application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype application/x-font-ttf application/xml font/eot font/opentype font/otf image/svg+xml image/vnd.microsoft.icon text/x-js.
Acrescentado o text/x-js na lista de Content-Type, um site poderá ter mais requisições HTTP compressão, consequentemente o site terá o tráfego de rede menor. Claro, sem esquecer de mencionar que o usuário poderá ter uma experência melhor com as páginas do site já que elas poderão ser menores e mais rápidas.
Nas novas configurações na Akamai estou acrescentando os Content-Type e os arquivos para as regras de compressão e cache como abaixo:
Regra de compressão
Regra de Cache
Os resultados e comentários sobre ranking das CDNs estão no texto que publiquei publicado no Bigqueries.
Obs.: As expressões regulares no BigQuery são baseadas no RE2, recomendo fortemente ler a documentação dele.
Links
http://httparchive.org/trends.php
http://en.wikipedia.org/wiki/Content_delivery_network
http://www.fastly.com/blog/new-gzip-settings-and-deciding-what-to-compress/
http://bigqueri.es/t/whats-the-popularity-of-different-cdns/477
https://cloud.google.com/bigquery/query-reference
https://code.google.com/p/re2/wiki/Syntax
0sem comentários ainda