O HTTP/2, originalmente denominado HTTP/2.0, é a versão mais recente do protocolo HTTP. Em comparação com o HTTP/1.1, o HTTP/2 oferece suporte a mais recursos, incluindo multiplexação, compressão de cabeçalhos, priorização de solicitações e server push. O HTTP/2 proporciona desempenho otimizado e mantém compatibilidade com a semântica do HTTP/1.1. Os principais navegadores, como Google Chrome, Microsoft Edge, Safari e Mozilla Firefox, oferecem suporte ao HTTP/2.
Benefícios do HTTP/2:
Codificação binária: diferentemente do protocolo HTTP/1.x, que usa texto simples delimitado por novas linhas, toda a comunicação HTTP/2 é dividida em mensagens e frames menores codificados em formato binário. Esse mecanismo torna o HTTP/2 mais extensível. Por exemplo, frames transmitem dados e instruções.
Multiplexação: o HTTP 1.x exige o uso de sprites e múltiplos nomes de domínio para melhorar o desempenho, pois os navegadores limitam o número de solicitações para o mesmo nome de domínio. Quando clientes solicitam uma grande quantidade de recursos em uma página, pode ocorrer bloqueio de cabeça de fila (bloqueio HOL). Se o número de solicitações atingir o limite máximo, elas precisarão aguardar em fila, já que apenas uma solicitação pode ser entregue por vez por conexão. O HTTP/2 introduz uma nova camada de framing na qual fluxos bidirecionais (solicitações e respostas) podem ser transmitidos pela mesma conexão TCP. Cada fluxo possui um identificador exclusivo e cabeçalhos que o encapsulam entre o cliente e o servidor. Esse mecanismo elimina o bloqueio HOL e melhora o desempenho da transmissão.
Compressão de cabeçalhos: cada mensagem HTTP carrega diversos cabeçalhos que descrevem o recurso transferido e suas propriedades. Para reduzir a sobrecarga, o HTTP/2 utiliza a compressão HPACK. Tanto o cliente quanto o servidor devem manter e atualizar uma lista indexada de campos de cabeçalho no HTTP/2. Essa lista serve como referência para codificar valores transmitidos anteriormente por meio do envio de valores de índice, aumentando a eficiência e o desempenho da transmissão de dados.
Server push: esse recurso permite que um servidor envie múltiplas respostas para um único cliente. Além da resposta à solicitação original, o servidor pode enviar recursos adicionais proativamente ao cliente.