Giao thức HTTP / 2

Mô tả chi tiết về cách thức hoạt động của giao thức HTTP / 2

Tôi đề nghị đọcHướng dẫn HTTPĐầu tiên

HTTP / 2 là phiên bản hiện tại của giao thức HTTP. Được phát hành vào năm 2015 bởi ủy ban IETF (Lực lượng Đặc nhiệm Kỹ thuật Internet), nó hiện đã được chấp nhận rộng rãi nhờ các tính năng độc đáo của nó.

HTTP / 2 hoạt động hiệu quả hơn HTTP / 1.1, phiên bản HTTP cuối cùng có sẵn vào thời điểm đó.

Tốc độ tăng do HTTP / 2 cung cấp rất hấp dẫn nên nó đã được chấp nhận rất nhanh - với một thay đổi đơn giản trong Máy chủ web (vì HTTP / 2 tương thích ngược 100% với HTTP / 1.1), các trang web và ứng dụng web của bạn hiện đang hoạt động tự động nhanh hơn nhiều, do đó có lợi cho người dùng của bạn và cả cho mục đích SEO (vì tốc độ là một yếu tố quan trọng để xếp hạng).

Làm thế nào HTTP / 2 có thể nhanh hơn nhiều so với HTTP / 1.1? Có rất nhiều lý do, tất cả đều hướng tới việc giảm thiểu sự kém hiệu quả của phiên bản trước và giới thiệu các tính năng có thể cho phép các trình duyệt có khả năng phục vụ tài nguyên nhanh hơn.

Các tính năng chính của phiên bản mới của giao thức là:

  • ghép kênh yêu cầu và phản hồi
  • nén hiệu quả các tiêu đề HTTP
  • máy chủ đẩy
  • giao tiếp nhị phân

Ghép kênh

Trước HTTP / 2, mỗi lần chỉ có thể phân phát một phản hồi cho mỗi kết nối TCP.

TCP là giao thức cơ bản mà HTTP được xây dựng. TCP vẫn ở tầng truyền tải, trong khi HTTP ở cấp ứng dụng.

HTTP / 2 cho phép ghép kênh yêu cầu / phản hồi trên cùng một kết nối TCP duy nhất, cho phép máy chủ phân phát nhiều yêu cầu với cùng một kết nối dẫn đến giao tiếp nhanh hơn nhiều.

Đây là một thay đổi duy nhất sẽ mang lại lợi ích lớn cho ứng dụng của bạn và làm cho một số kỹ thuật tối ưu hóa trở nên lỗi thời, bao gồm các sprite hình ảnh (được sử dụng để kết hợp nhiều hình ảnh trong một hình duy nhất, sau đó được "phân kênh" bằng cách sử dụng kỹ thuật CSS đặc biệt ) và sharding miền, một cách hack khác được sử dụng để ngăn trình duyệt giới hạn số lượng kết nối đồng thời với cùng một miền.

Nén tiêu đề

Tiêu đề HTTP trên các trang và tài nguyên có thể phát triển khá lớn, xem xét việc sử dụng cookie và các giá trị tiêu đề khác bình thường. Nén cho phép HTTP có dấu ấn nhẹ hơn, giảm lượng dữ liệu được trao đổi giữa máy khách và máy chủ.

Máy chủ đẩy

Đẩy máy chủ là một tính năng cho phép gửi nhiều phản hồi cho một yêu cầu duy nhất. Vì máy chủ biết rằng khi yêu cầu tài nguyên, sau đó máy khách sẽ yêu cầu các tài nguyên bổ sung khác (nghĩ CSS, JS, hình ảnh được liên kết với một trang) nên máy chủ có thể quyết định gửi chúng ngay lập tức.

Thay vì gửi HTML, đợi trình duyệt phân tích cú pháp và kích hoạt các yêu cầu khác để lấy nội dung, máy chủ có thể đẩy chúng hoàn toàn.

Máy chủ cũng có thể quyết định gửi các tài nguyên có thể cần thiết trong các yêu cầu trong tương lai, tối ưu hóa trước lần tải trang tiếp theo và đưa nó vào bộ đệm ẩn của máy khách.

Lưu ý rằng đẩy máy chủ cũng có thể có những hạn chế riêng - ví dụ: bạn có thể gặp rủi ro khi gửi quá nhiều dữ liệu đến máy khách mà có thể không cần thiết (có thể nó đã có sẵn trên máy khách dưới dạng được lưu trong bộ nhớ cache), vì vậy hãy thận trọng khi sử dụng

Giao tiếp nhị phân

HTTP / 1.1 đã sử dụng giao tiếp dựa trên văn bản. HTTP / 2 sử dụng giao tiếp nhị phân, có một số ưu điểm, bao gồm phân tích cú pháp hiệu quả hơn, ít bị lỗi hơn và cũng nhỏ gọn hơn.

Sự phát triển cho tương lai là gì?

HTTP/3đang được phát triển và sẽ được điều chỉnh từHTTP-over-QUIC, một dự án thử nghiệm.

QUIC là một giao thức dựa trên UDP (chứ không phải TCP) ở lớp truyền tải, có nghĩa là HTTP / 3 sẽ dựa trên một ngăn xếp công nghệ hoàn toàn khác so với HTTP / 2 và HTTP / 1.x.


Các hướng dẫn khác về mạng: