http2 explained
  • English
    • Background
    • HTTP Today
    • Things done to overcome latency pains
    • Updating HTTP
    • http2 concepts
    • The http2 protocol
    • Extensions
    • An http2 world
    • http2 in Firefox
    • http2 in Chromium
    • http2 in curl
    • After http2
    • Further reading
    • Thanks
  • Español
    • Antecedentes
    • HTTP hoy
    • Estrategias para evitar los dolores de latencia
    • Actualizando HTTP
    • Conceptos de http2
    • El protocolo http2
    • Extensiones
    • Un mundo http2
    • http2 en Firefox
    • http2 en Chromium
    • http2 en curl
    • Después de http2
    • Otras lecturas
    • Agradecimientos
  • فارسی
    • مقدمه و معرفی
    • پیش‌زمینه
    • HTTP امروز
    • کارهایی که برای غلبه بر تأخیرها انجام شده
    • آپدیت‌کردن HTTP
    • مفاهیم http2
    • پرتکل http2
    • افزونه‌ها
    • دنیایی با http2
    • http2 در فایرفاکس
    • http2 در کرومیوم
    • http2 در curl
    • بعد از http2
    • خواندن بیشتر
    • تقدیر و تشکر
    • واژه‌نامه
  • Français
    • Avant-propos
    • HTTP aujourd'hui
    • Rustines pour s'accommoder de la latence
    • Mettre à jour HTTP
    • Concepts http2
    • Le protocole http2
    • Extensions
    • Le monde http2
    • http2 et Firefox
    • http2 et Chromium
    • http2 et curl
    • Après http2
    • Lecture complémentaire
    • Remerciements
  • Italiano
    • Background
    • HTTP oggi
    • Tecniche applicate al contrasto della latenza
    • Aggiornare HTTP
    • http2 a grandi linee
    • Il protocollo http2
    • Estensioni
    • Un mondo di http2
    • http2 in Firefox
    • http2 in Chromium
    • http2 in curl
    • Dopo http2
    • Altre letture
    • Riconoscimenti, Ringraziamenti
  • 日本語
    • 背景
    • HTTPの現状確認
    • レイテンシーの闇を克服せよ
    • もうやめて、HTTP 1.1のライフはゼロよ
    • http2のコンセプト
    • http2プロトコル
    • http2は拡張の夢を見る
    • http2化される世界
    • Firefoxにおけるhttp2
    • Chromiumにおけるhttp2
    • curlにおけるhttp2
    • http2の次にくるもの
    • 参考文献
    • 謝辞
  • 한국어
    • 배경
    • HTTP 현재
    • 대기시간의 고통을 극복하기 위해 한일
    • HTTP 업데이팅
    • http2 컨셉
    • http2 프로토콜 (번역되지 않은)
    • 연장선 (번역되지 않은)
    • http2 세계 (번역되지 않은)
    • Firefox에서의 http2
    • Chromium에서의 http2
    • curl에서의 http2
    • HTTP2 다음에 오는 것
    • 참조
    • 감사의 말
  • Português
    • Antecedentes
    • HTTP Hoje
    • Estratégias para evitar as dores da latência
    • Atualizando HTTP
    • Conceitos de http2
    • O protocolo http2
    • Extensões
    • Um mundo http2
    • http2 e Firefox
    • http2 e Chromium
    • http2 e curl
    • Após o http2
    • Outras leituras
    • Agradecimentos
  • русском
    • История
    • HTTP сегодня
    • Шаги, предпринятые для преодоления задержки
    • Обновление HTTP
    • Концепция http2
    • Протокол http2
    • Расширения
    • Мир http2
    • http2 в Firefox
    • http2 в Chromium
    • http2 в curl
    • После http2
    • Дальнейшее чтение
    • Благодарности
  • Svenska
    • Bakgrund
    • HTTP idag
    • Tricks för att komma över fördröjningssmärtor
    • Uppdatera HTTP
    • http2-koncept
    • http2-protokollet
    • Utökningar
    • En http2-värld
    • http2 i Firefox
    • http2 i Chromium
    • http2 i curl
    • Efter http2
    • Fortsatt läsning
    • Tack
  • Türkçe
    • Arkaplan
    • HTTP'nin Bugünü
    • Gecikmelerin üstesinden gelmek için yapılanlar
    • HTTP'nin güncellenmesi
    • http2 konseptleri
    • http2 protokolü
    • Uzantılar
    • http2 dünyası
    • Firefox'da http2
    • Chromium'da http2
    • curl'de http2
    • http2 sonrası
    • Daha fazla bilgi için
    • Teşekkürler
  • 中文
    • 背景
    • HTTP的现状
    • 那些年,克服延迟之道
    • 升级HTTP
    • http2的观念
    • http2协议
    • 扩展
    • http2的世界
    • Firefox里的http2
    • Chromium里的http2
    • Curl里的http2
    • 后http2时代
    • 扩展阅读
    • 致谢
Powered by GitBook
On this page
  • 3.1 Spriting
  • 3.2 Inlining
  • 3.3 Concatenação
  • 3.4 Sharding

Was this helpful?

Export as PDF
  1. Português

Estratégias para evitar as dores da latência

PreviousHTTP HojeNextAtualizando HTTP

Last updated 5 years ago

Was this helpful?

Como sempre quando se enfrentam problemas, as pessoas tentam encontrar soluções. Algumas das soluções são inteligentes e úteis, outras são apenas horríveis.

3.1 Spriting

Spriting é o termo corrente utilizado para descrever quando você põe várias imagens pequenas juntas numa só imagem grande. Depois utiliza javascript ou CSS para "cortar" pedaços dessa mesma imagem grande para mostrar imagens individuais pequenas.

Um site utilizaria este truque para velocidade. Descarregar uma imagem grande é muito mais rápido em HTTP 1.1 do que descarregar 100 imagens individuais pequenas.

Claro que isto tem as suas desvantagens para uma página de um site que apenas quer mostrar uma ou duas das imagens pequenas ou similar. Isto também faz com que as imagens sejam descartadas do cache ao mesmo tempo em vez de deixar permanecer as que são utilizadas com mais frequência.

3.2 Inlining

Inlining é outro truque para evitar enviar imagens individuais, e isto é feito utilizando data: URLs embutidos num ficheiro CSS. Isto tem benefícios similares e incovinientes como no caso de spriting.

.icon1 {
    background: url(data:image/png;base64,<data>) no-repeat;
}

.icon2 {
    background: url(data:image/png;base64,<data>) no-repeat;
}

3.3 Concatenação

Um site grande pode ter vários ficheiros diferentes de javascript. Ferramentas Front-end vão ajudar os programadores a junta-los num só ficheiro grande que o browser irá descarregar em vez de várias dezenas de ficheiros pequenos. Muitos dados serão enviados quando apenas poucos são necessários. Muitos dados terão que ser recarregados quando uma alteração é necessária.

Esta prática é claramente uma inconveniência para os programadores envolvidos.

3.4 Sharding

O último truque que irei mencionar é normalmente referido como “sharding”. Basicamente significa servir aspetos do seu serviços num numero máximo possível de servidores. De inicio isto parece estranho mas existe uma boa razão por detrás da mesma.

Inicialmente a especificação do HTTP 1.1 dita que o cliente poderia utilizar um máximo de duas conexões TCP para cada anfitrião. Então, como forma de não violar a especificação sites inteligentes inventaram novos host names e - voilá - pode ter mais conexões ao seu site e diminuir o tempo que leva a carregar.

Ao longo do tempo, essa limitação foi removida e hoje os clientes facilmente utilizam 6-8 conexões por anfitrião mas continuam a ter um limite e como tal os sites continuam a utilizar esta técnica para aumentar o numero de conexões. Como o número de objectos está sempre a aumentar - como eu já demonstrei - o número elevado de conexões é apenas usado para ter a certeza que o HTTP executa corretamente e o site é rápido. Isto não é raro que um site utilize 50 ou mesmo 100 ou mais conexões para apenas um site utilizando esta técnica.

Estatísticas recentes do httparchive.org mostram que os primeiros 300.000 URLs do mundo precisam em media de 40(!) conexões TCP para mostrar o site, e a expectativa é de crescer lentamente ao longo do tempo.

Outra razão é também de meter imagens ou recursos similares num anfitrião à parte que não utilize cookies, pelo que o tamanho das cookies nos dias correntes poder ser tanto ou quanto significante. Utilizando um anfitrião cookie-free pode por vezes aumentar a performance simplesmente permitindo pedidos de HTTP muito mais pequenos.

A imagem em baixo mostra como trace de packets é quando estamos a navegar um dos top sites da Suécia e como os pedidos estão distribuídos por vários anfitriões.

image sharding at expressen.se