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 requisiçõ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: Ao contrário do protocolo HTTP/1.x, que utiliza texto simples delimitado por novas linhas, toda a comunicação HTTP/2 é dividida em mensagens e frames menores, cada um codificado em formato binário. Esse mecanismo de codificação binária torna o HTTP/2 mais extensível. Por exemplo, frames são introduzidos para transmitir 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 requisições para um 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 requisições atingir o limite máximo, elas precisarão aguardar em uma fila, já que apenas uma requisição pode ser enviada por vez por conexão. O HTTP/2 introduz uma nova camada de framing, na qual fluxos bidirecionais (requisições e respostas) podem ser transmitidos pela mesma conexão TCP. Cada fluxo possui um identificador exclusivo e cabeçalhos específicos, usados para encapsular o fluxo 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. Essa lista serve como referência para codificar valores transmitidos anteriormente por meio de índices, o que aumenta a eficiência e o desempenho na transmissão de dados.
Server push: O server push permite que um servidor envie múltiplas respostas para um único cliente. Além da resposta à requisição original, o servidor pode enviar recursos adicionais proativamente ao cliente.