Giải thích về http2. Phân phối tài nguyên giữa các máy chủ: sharding. Để đọc thêm

Trong bài viết này chúng ta sẽ nói về HTTP/2 là gì. Hãy sắp xếp một loại kiểm tra, một bài kiểm tra: đây chỉ là một từ thông dụng tiếp thị hay nó thực sự đúng cách cải thiện hiệu suất trang web (và bạn có thể xác minh điều này bằng cách chạy kiểm tra trực tuyến và so sánh kết quả phân tích).

Có hai loại nhà phát triển web - những người đã sử dụng HTTP/2 để tăng hiệu suất trang web và những người sẵn sàng sử dụng HTTP/2 trong các dự án tương lai của họ. Nếu bạn chưa nghe nói về HTTP/2 thì bạn còn rất nhiều việc phải làm về vấn đề này. Bắt đầu nào.

Vậy HTTP/2 là gì? Nó chỉ là một từ thông dụng tiếp thị hay nó thực sự là điều đáng chú ý?

HTTP/2 là phiên bản mới nhất của Giao thức truyền siêu văn bản HTTP nổi tiếng, được sử dụng trên World Wide Web. Giao thức này cho phép phân tách văn bản và thông tin đa phương tiện bằng cách sử dụng cái gọi là liên kết web giữa các nút không được kết nối, chẳng hạn như trình duyệt và máy chủ. Ví dụ: trình duyệt của bạn sử dụng giao thức này để tải xuống bài viết này. Nhưng không có HTTP thì sẽ không có Internet!

Trước khi xem xét lợi ích của HTTP/2 và giải thích lý do tại sao nó sẽ tăng tốc trang web của bạn, trước tiên hãy hiểu cách truyền dữ liệu giữa hệ thống độc lập.

GIAO THỨC MẠNG HTTP

HTTP sử dụng công nghệ client-server. Điều này có nghĩa là trình duyệt của bạn (Firefox, Chrome, v.v.) là “máy khách” và blog của chúng tôi chạy trên máy chủ lưu trữ. Ví dụ: bài viết này có thể được xác định và tải xuống bằng URL Bộ định vị tài nguyên thống nhất. Nếu bạn mở URL của bài viết này, máy khách của bạn sẽ gửi yêu cầu HTTP tới máy chủ và nhận thông tin ở định dạng HTML. Ngay sau khi truyền dữ liệu (đến lớp vận chuyển qua giao thức TCP) sẽ được thực hiện, trình duyệt của bạn sẽ hiển thị phản hồi nhận được dưới dạng mã HTML để hiển thị văn bản bạn đang đọc.

Sự kiện lịch sử: Thuật ngữ "siêu văn bản" được Ted Nelson sử dụng lần đầu tiên vào năm 1965 (dự án Xanadu). HTTP và HTML được tạo ra bởi Tim Berners-Lee và nhóm của ông tại CERN vào năm 1989. Nhân tiện, trang web đầu tiên được xuất bản vào ngày 6 tháng 8 năm 1991.

Giao thức mạng hỗ trợ phiên và xác thực. Phiên là một chuỗi mở các giao dịch phản hồi yêu cầu qua kết nối TCP tới một cổng cụ thể. Cổng 80 được sử dụng cho HTTP và 443 cho kết nối HTTPS. HTTPS là HTTP qua SSL/TLS, có nghĩa là kết nối hai đầu được tạo qua kênh được mã hóa bằng giao thức mật mã Transport Layer Security (TLS).

HTTP/1.0 và HTTP/1.1

Trước khi HTTP/2 được giới thiệu làm tiêu chuẩn, giao thức trước đó HTTP/1.1 là tiêu chuẩn chính thức. HTTP/1.1 là phiên bản cải tiến của phiên bản HTTP/1.0 gốc, được giới thiệu chính thức vào năm 1996. Phiên bản đầu tiên của HTTP/1.1 được giới thiệu vào năm 1997, phiên bản cải tiến và cập nhật được phát hành vào năm 1999 và một lần nữa vào năm 2014. Sự khác biệt chính giữa hai tiêu chuẩn cũ này là sự hỗ trợ cho nhiều kết nối trong một yêu cầu duy nhất.

HTTP/1.0 chỉ hỗ trợ một kết nối cho mỗi yêu cầu tài nguyên, trong khi HTTP/1.1 cho phép sử dụng cùng một kết nối nhiều lần, tức là. được cài đặt kết nối vĩnh viễn. Điều này mang lại độ trễ ít hơn và giúp trang web hiện đại tải nhanh hơn. Độ trễ là khoảng thời gian giữa yêu cầu (lý do) và phản hồi (kết quả). Tùy chọn này đã được cải tiến hơn nữa trong HTTP/2, nhưng chúng tôi sẽ giải thích những ưu điểm chính của tiêu chuẩn mới sau.

THÊM VỀ CÁC PHƯƠNG PHÁP YÊU CẦU HTTP

Cao hơn một chút, chúng tôi đã nói về các yêu cầu đối với máy chủ. HTTP xác định một số phương thức yêu cầu có thể được sử dụng cho các mục đích và hành động khác nhau trên một tài nguyên cụ thể. Các phương thức phổ biến nhất là GET và POST, có lẽ bạn đã quen thuộc.

Khi bạn gọi một URL bằng cách nhấp vào một liên kết thông thường, trình duyệt của bạn sẽ tạo yêu cầu GET. Bạn có thể thấy NHẬN thông số trực tiếp trong URL, ví dụ?id=42. Trong ví dụ này NHẬN biếnđây là mã định danh có giá trị 42. Khi bạn đăng ký dịch vụ bằng cách nhập dữ liệu của mình vào biểu mẫu và nhấp vào nút xác nhận, khách hàng của bạn sẽ hoàn tất ĐĂNG yêu cầu. Ngoài các phương thức này, HTTP còn hỗ trợ một số phương thức khác thường không được trình duyệt sử dụng khi lướt Internet. Đây là những phương pháp:

  • CÁI ĐẦU(tương tự như phương thức GET, nhưng không có phần phản hồi),
  • ĐẶT(thay đổi hoặc tạo tài nguyên),
  • XÓA BỎ(xóa tài nguyên),
  • DẤU VẾT(yêu cầu echo),
  • TÙY CHỌN(trả về các phương thức HTTP được hỗ trợ),
  • KẾT NỐI(chuyển đổi các yêu cầu thành đường hầm TCP/IP),
  • (áp dụng các thay đổi cho tài nguyên).

TRẢ LỜI HTTP VÀ MÃ TRẠNG THÁI HTTP

Chúng ta hãy xem nhanh các câu trả lời cho các truy vấn. Phản hồi của máy chủ sau yêu cầu không chỉ chứa nội dung phản hồi và mã HTML để hiển thị trang đã tải mà còn chứa các trường tiêu đề phản hồi. Các trường này chứa thông tin và tham số quan trọng về giao dịch HTTP trên kết nối đã thiết lập, chẳng hạn như thuật toán mã hóa được sử dụng hoặc cơ chế lưu vào bộ đệm. Để mô tả đầy đủ, cần lưu ý rằng những thông số quan trọng cũng được gửi trong các trường tiêu đề yêu cầu.

Dòng đầu tiên của phản hồi HTTP luôn chứa cái gọi là mã trạng thái, giúp khách hàng xử lý phản hồi một cách chính xác. Ai mà không biết thông báo “Lỗi Máy chủ 500” khét tiếng. Chính mã trạng thái 500 này đã được máy chủ gửi tới trình duyệt do vấn đề nội bộ máy chủ. Có một số loại chính, được xác định bởi chữ số đầu tiên:

  • 1 – thông tin,
  • 2 - thành công,
  • 3 – chuyển hướng,
  • 4 – lỗi của khách hàng,
  • 5 - Lỗi máy chủ.

LỢI ÍCH CỦA HTTP/2

HTTP/2 hỗ trợ hầu hết cú pháp cấp cao của HTTP/1.1. Ví dụ: các phương thức yêu cầu hoặc mã trạng thái đều giống nhau. Những thay đổi quan trọng nhất là cách tạo và truyền gói dữ liệu giữa các nút.

Máy chủ có thể truyền dữ liệu đến máy khách ngay cả khi trình duyệt chưa yêu cầu nhưng cần thiết để trình duyệt hiển thị đầy đủ trang. Các yêu cầu bổ sung có thể được ghép kênh (các yêu cầu hoặc phản hồi được kết hợp) và được dẫn (nhiều yêu cầu mà không cần chờ phản hồi tương ứng) trên một kết nối TCP. Những cải tiến này làm giảm độ trễ và dẫn đến tốc độ tải trang tốt hơn.
Vậy cần những gì để bắt đầu tận dụng HTTP/2? Cả máy khách và máy chủ đều phải hiểu và hỗ trợ tiêu chuẩn này. Tất cả các trình duyệt hiện đại phổ biến đều đã có sẵn tính năng hỗ trợ HTTP/2 trên khoảnh khắc này. Trình duyệt của bạn sẽ tự động tải các trang web qua HTTP/2 nếu máy chủ hỗ trợ. (nghĩa là nếu nó được kích hoạt).

LÀM THẾ NÀO ĐỂ KÍCH HOẠT HTTP/2 TRÊN MÁY CHỦ CỦA TÔI? SỬ DỤNG PLES!

Thiết lập HTTP/2 thực sự dễ dàng! Như mọi khi, Plesk đã làm tất cả công việc khó khăn cho bạn trong khi bạn thư giãn và chăm sóc công việc kinh doanh của mình. Nếu bạn đã có Plesk trên máy chủ của mình thì bạn chỉ cần thực hiện một vài cú nhấp chuột để kích hoạt hỗ trợ cho tiêu chuẩn mạng nhanh, hiện đại.

Nhóm Plesk đã tạo tiện ích mở rộng bảo mật, Cố vấn bảo mật, trong đó bạn có thể bật HTTP/2 và cũng có thể bật Chứng chỉ SSL và hỗ trợ HTTPS chỉ với 1 cú nhấp chuột trong WordPress. Mở thư mục tiện ích mở rộng Plesk và cài đặt Security Advisor. Tiện ích mở rộng này hoàn toàn miễn phí và không chỉ bảo vệ trang web của bạn mà còn tăng tốc độ trang web!

  • Dịch

Một phiên bản mới của tiêu chuẩn HTTP gần đây đã được phát hành. HTTP/2 đã được phê duyệt vào tháng 5 năm 2015 và đã trở nên phổ biến trong các trình duyệt và máy chủ web (bao gồm NGINX và NGINX Plus). Hiện tại, hơn 60% trình duyệt đang sử dụng hỗ trợ HTTP/2 và con số này tiếp tục tăng lên hàng tháng.

Tiêu chuẩn HTTP/2 dựa trên giao thức SPDY do Google phát triển. TRONG Google Chrome SPDY sẽ được hỗ trợ cho đến đầu năm 2016. NGINX là một trong những công ty đầu tiên triển khai giao thức SPDY và ​​hiện đóng vai trò dẫn đầu trong việc phát triển HTTP/2. Nó đã được xuất bản, cung cấp mô tả chi tiết về HTTP/2, cung cấp sự so sánh với SPDY và ​​mô tả chi tiết quá trình triển khai giao thức mới.

Các tính năng chính của HTTP/2 tương tự như SPDY:

  • HTTP/2 là giao thức nhị phân, không phải giao thức văn bản, giúp nó nhỏ gọn và hiệu quả hơn.
  • HTTP/2 chỉ sử dụng một kết nối ghép kênh đến máy chủ, thay vì nhiều kết nối truyền một tệp cùng một lúc.
  • HTTP/2 sử dụng giao thức HPACK chuyên dụng để nén tiêu đề (thay vì gzip, được sử dụng trong SPDY).
  • HTTP/2 sử dụng cơ chế ưu tiên phức tạp để cung cấp cho trình duyệt nhiều lợi ích nhất tập tin cần thiết trước hết (SPDY đã sử dụng thuật toán đơn giản hơn).
Bây giờ chúng ta cần đi sâu hơn và xem xét kỹ hơn các tính năng của giao thức mới. Bài viết này được viết để giúp đưa ra quyết định chuyển sang HTTP/2 và cũng thảo luận về tối ưu hóa có thể khi thực hiện giao thức.
  1. Chấm dứt HTTP/2
  2. Bắt đầu với SPDY
  3. Tránh tối ưu hóa HTTP/1.x
  4. Triển khai HTTP/2 hoặc SPDY
  5. Xem lại tối ưu hóa HTTP/1.x
  6. Xem xét việc phân chia thân thiện với HTTP/2
Lưu ý: Nói đúng ra SPDY và ​​HTTP/2 không yêu cầu TLS, nhưng lợi ích chính là khi SSL/TLS được bật, do đó các trình duyệt chỉ hỗ trợ SPDY và ​​HTTP/2 nếu có SSL/TLS.

Đánh giá nhu cầu triển khai HTTP/2

Việc triển khai HTTP/2 không khó và quy trình được mô tả chi tiết. Tuy nhiên, cần hiểu rằng HTTP/2 không giải pháp phổ quát và có thể hữu ích cho một số ứng dụng nhưng không hữu ích cho những ứng dụng khác.

Ví dụ: rất có thể HTTP/2 sẽ tăng tốc một trang web đang sử dụng SSL/TLS (sau đây viết tắt là TLS), nếu không thì TLS phải được bật trước khi bật HTTP/2. Cần lưu ý rằng việc sử dụng TLS có thể ảnh hưởng đến hiệu suất, điều này có thể cản trở khả năng tăng tốc từ HTTP/2. Vì vậy, cần phải kiểm tra trường hợp này trước tiên.

  1. Chỉ một kết nối đến máy chủ được sử dụng thay vì nhiều kết nối truyền một tệp cùng một lúc. Nói cách khác, số lượng kết nối giảm đi, điều này đặc biệt hữu ích khi sử dụng TLS.
  2. Sử dụng TLS hiệu quả HTTP/2 chỉ thực hiện một lần bắt tay TLS và việc ghép kênh cho phép sử dụng kết nối này một cách hiệu quả. HTTP/2 cũng nén dữ liệu tiêu đề và loại bỏ các tối ưu hóa HTTP/1.x (chẳng hạn như nối tệp) cho phép thuật toán bộ nhớ đệm hoạt động hiệu quả hơn.
  3. Đơn giản hóa các ứng dụng web. Bằng cách sử dụng HTTP/2, bạn có thể loại bỏ các tối ưu hóa HTTP/1.x cũng gây bất tiện cho nhà phát triển.
  4. Tuyệt vời cho các trang web phức tạp. HTTP/2 rất phù hợp cho các trang web sử dụng HTML, CSS, JavaScript, hình ảnh và video cùng một lúc. Trình duyệt có thể ưu tiên các yêu cầu tệp để những phần cần thiết nhất của trang được gửi trước.
  5. Bảo mật kết nối. Mặc dù có thể bị giảm hiệu năng khi sử dụng HTTP/2 do sử dụng TLS, nhưng đồng thời, TLS sẽ giúp ứng dụng web trở nên an toàn hơn cho người dùng.

Và 5 nhược điểm tương ứng mà bạn có thể gặp phải:

  1. Chi phí cao cho một kết nối. Thuật toán nén dữ liệu HPACK yêu cầu hỗ trợ LUT ở cả hai đầu. Ngoài ra, cần nhiều bộ nhớ hơn cho mỗi kết nối.
  2. Có thể TLS đang được sử dụng một cách dư thừa. Nếu như thông tin được truyền đi không cần bảo vệ hoặc đã được bảo vệ bằng DRM (hoặc mã hóa khác), thì TLS khó có thể hữu ích trong trường hợp này.
  3. Việc tìm và loại bỏ các tối ưu hóa HTTP/1.x hiện có là cần thiết để cải thiện hiệu suất HTTP/2, đây là công việc bổ sung.
  4. Không mang lại lợi ích khi tải xuống các tệp lớn. Nếu ứng dụng web được thiết kế chủ yếu để tải xuống các tệp lớn hoặc truyền phát video thì có khả năng việc sử dụng TLS sẽ gây hiểu lầm và việc ghép kênh sẽ không mang lại bất kỳ lợi ích nào.
  5. Bảo mật không quan trọng. Có lẽ khách truy cập không quan tâm rằng video về mèo họ chia sẻ trên trang web của bạn không được bảo vệ bởi TLS và HTTP/2 (điều này có thể đúng).
Tất cả đều phụ thuộc vào hiệu suất và có tin tốt và tin xấu.

Tin vui là dựa trên các thử nghiệm được tiến hành trong NGINX, kết quả được dự đoán từ lý thuyết như sau: đối với các trang web phức tạp được yêu cầu có độ trễ thông thường, hiệu suất HTTP/2 sẽ tốt hơn HTTP/1.x và HTTPS. Kết quả được chia thành ba nhóm tùy thuộc vào thời gian khứ hồi (RTT) thông thường:

  • RTT rất thấp (0-20 ms): Hầu như không có sự khác biệt giữa HTTP/1.x, HTTP/2 và HTTPS.
  • RTT trung bình (điển hình trên web) (30-250 mili giây): HTTP/2 nhanh hơn HTTP/1.x và cả hai đều nhanh hơn HTTPS. Đối với các thành phố lân cận ở Hoa Kỳ, RTT là khoảng 30 mili giây và khoảng 70 mili giây từ bờ này sang bờ khác (khoảng 3000 dặm). Trên một trong những tuyến đường ngắn nhất giữa Tokyo và London, RTT là khoảng 240 mili giây.
  • RTT cao (300 ms trở lên): HTTP/1.x nhanh hơn HTTP/2, nhanh hơn HTTPS.

Hình này hiển thị thời gian trước khi bắt đầu hiển thị - tức là thời gian cho đến khi người dùng nhìn thấy nội dung đầu tiên của trang web. Thời gian này thường được coi là thời điểm xác định cách người dùng cảm nhận khả năng phản hồi của trang web.

Thông tin chi tiết hơn về quá trình thử nghiệm và kết quả có thể được tìm thấy trong thuyết trình từ hội nghị nginx.conf 2015.

Tuy nhiên, mỗi trang web và phiên người dùng đều khác nhau. Ví dụ: nếu bạn có video phát trực tuyến hoặc tệp tải xuống có dung lượng lớn thì kết quả của bạn có thể khác hoặc thậm chí ngược lại.

Điểm mấu chốt là trước tiên bạn cần hiểu chi phí tiềm ẩn và lợi ích lớn nhất của việc sử dụng HTTP/2. Sau đó, bạn nên tiến hành kiểm tra hiệu năng của các ứng dụng của mình và đưa ra lựa chọn.

Chấm dứt HTTP/2

Việc chấm dứt có nghĩa là máy khách có thể kết nối với máy chủ proxy thông qua giao thức này, ví dụ HTTP/2, sau đó máy chủ proxy kết nối với các ứng dụng máy chủ, cơ sở dữ liệu, v.v. sử dụng một giao thức hoàn toàn khác (xem hình ảnh bên dưới).


Khi sử dụng các máy chủ riêng biệt, có thể chuyển sang kiến ​​trúc nhiều máy chủ. Máy chủ có thể được chia sẻ vật lý, ảo hoặc trong môi trường đám mây như AWS. Điều này làm tăng thêm độ phức tạp cho kiến ​​trúc so với giải pháp một máy chủ hoặc kết hợp máy chủ+cơ sở dữ liệu, nhưng mang lại nhiều lợi ích và là điều cần thiết cho các trang web có tải trọng cao.

Khi máy chủ vật lý hoặc ảo được cài đặt trước hệ thống hiện có, các khả năng bổ sung sẽ khả dụng. Máy chủ mới giúp các máy chủ khác xử lý tin nhắn của khách hàng. Ngoài ra, nó có thể được sử dụng để cân bằng tải, lưu vào bộ nhớ đệm tệp tĩnh và bất kỳ mục đích nào khác. Làm cho việc thêm và thay thế dễ dàng hơn nhiều ứng dụng máy chủ và các máy chủ khác khi cần thiết.

NGINX và NGINX Plus thường được sử dụng cho tất cả các mục đích này - chấm dứt TLS và HTTP/2, cân bằng tải và hơn thế nữa. Môi trường hiện tại không yêu cầu bất kỳ thay đổi nào, ngoại trừ phần liên quan đến tương tác của người dùng với máy chủ NGINX.

Bắt đầu với SPDY

SPDY là tiền thân của giao thức HTTP/2 và hiệu suất của nó tương đương với HTTP/2. Vì SPDY đã xuất hiện được vài năm nên tất cả các trình duyệt phổ biến đều hỗ trợ nó, không giống như HTTP/2, xuất hiện tương đối gần đây. Tuy nhiên, tại thời điểm viết bài, khoảng cách đang thu hẹp và hơn 60% trình duyệt đã hỗ trợ HTTP/2, trong khi SPDY hỗ trợ hơn 80%.

Nếu có nhu cầu cấp thiết về triển khai giao thức truyền tải mới và sử dụng giao thức có sự hỗ trợ tối đa giữa những người dùng, thì bạn nên bắt đầu với SPDY. Sau đó, vào đầu năm 2016, khi hỗ trợ SPDY bị loại bỏ, hãy chuyển sang HTTP/2. Đến thời điểm này, sẽ có nhiều người dùng sử dụng trình duyệt hỗ trợ HTTP/2 hơn, do đó quá trình chuyển đổi này có thể là tối ưu theo quan điểm của hầu hết người dùng.

Tránh tối ưu hóa HTTP/1.x

Trước khi triển khai HTTP/2, cần xác định các hoạt động tối ưu hóa cho HTTP/1.x. Dưới đây là bốn loại tối ưu hóa cần xem xét:
  1. Phân mảnh. Đặt các tệp trên các miền khác nhau để truyền song song tới trình duyệt; Mạng phân phối nội dung (CDN) thực hiện việc này một cách tự động. Việc tối ưu hóa này có thể ảnh hưởng đến hiệu suất HTTP/2. Bạn có thể sử dụng phân đoạn thân thiện với HTTP/2 cho người dùng HTTP/1.x (xem phân đoạn thân thiện với HTTP/2).
  2. Sử dụng sprite. Sprites là tập hợp các hình ảnh được truyền dưới dạng một tệp duy nhất; Sau đó, về phía khách hàng, hình ảnh sẽ được lấy từ bộ sưu tập nếu cần. Việc tối ưu hóa này kém hiệu quả hơn khi sử dụng HTTP/2, mặc dù nó vẫn có thể hữu ích.
  3. Hợp nhất các tập tin. Giống như sprite, một số tệp thường được lưu trữ riêng biệt sẽ được kết hợp thành một. Sau đó, trình duyệt sẽ tìm và chạy mã khi cần trong tệp đã hợp nhất.
  4. Nhúng tập tin. CSS, JavaScript và thậm chí cả hình ảnh đều được chèn trực tiếp vào tệp HTML, giảm số lượng tập tin được chuyển, bằng cách tăng tệp HTML gốc.
Ba loại tối ưu hóa cuối cùng, hợp nhất các tệp nhỏ thành tệp lớn hơn, cắt bớt các kết nối mới và khởi tạo các kết nối bổ sung, đặc biệt quan trọng khi sử dụng TLS.

Tối ưu hóa đầu tiên, sharding, hoạt động khác - nó buộc phải mở nhiều kết nối hơn bằng cách sử dụng các miền bổ sung. Cùng với nhau, những phương pháp dường như trái ngược nhau này có thể khá hiệu quả trong việc cải thiện hiệu suất của các trang web HTTP/1.x. Tuy nhiên, tất cả họ đều dành thời gian, công sức và nguồn lực để phát triển, thực hiện, quản lý và duy trì hoạt động.

Trước khi triển khai HTTP/2, bạn nên tìm kiếm những cách tối ưu hóa này và hiểu cách chúng hiện tác động đến thiết kế và quy trình làm việc của ứng dụng. Việc này phải được thực hiện để bạn có thể thay đổi hoặc hoàn tác các tối ưu hóa này sau khi chuyển sang HTTP/2.

Triển khai HTTP/2 hoặc SPDY

Trên thực tế, việc chuyển sang HTTP/2 hoặc SPDY khá đơn giản. Đối với người dùng NGINX, bạn chỉ cần “kích hoạt” giao thức trong cấu hình NGINX, như được mô tả trong ví dụ HTTP/2. Sau đó, máy chủ sẽ thông báo cho trình duyệt máy khách về khả năng sử dụng HTTP/2 hoặc SPDY.

Khi HTTP/2 được bật trên máy chủ, người dùng có trình duyệt hỗ trợ HTTP/2 sẽ kết nối và làm việc với các ứng dụng web qua HTTP/2. Những người sử dụng phiên bản trình duyệt cũ hơn sẽ phải làm việc thông qua HTTP/1.x (xem hình ảnh bên dưới). Khi triển khai HTTP/2 hoặc SPDY trên các trang web có tải cao, bạn nên đo lường hiệu suất trước và sau, đồng thời khôi phục các thay đổi nếu xảy ra hậu quả tiêu cực.

Lưu ý: Vì việc bật HTTP/2 sử dụng một kết nối duy nhất nên một số cài đặt cấu hình trong NGINX trở nên quan trọng hơn. Bạn nên xem lại cấu hình NGINX của mình, đặc biệt chú ý đến việc định cấu hình và kiểm tra cài đặt cho các lệnh như out_buffers, proxy_buffers và ssl_buffer_size. Bạn nên chú ý đến các mẹo cụ thể về TLS ( và ) và về hiệu suất NGINX khi sử dụng TLS.

Lưu ý: Khi sử dụng mật mã với HTTP/2, hãy lưu ý những điều sau: RFC cho HTTP/2 có một danh sách dài các mật mã cần tránh. Nếu bạn muốn tự mình tùy chỉnh danh sách mật mã thì bạn nên cân nhắc việc thiết lập ssl_ciphers và bật ssl_prefer_server_ciphers rồi kiểm tra các mật mã thích hợp với tất cả các phiên bản trình duyệt phổ biến. Chỉ báo cho trình duyệt phổ biến Thử nghiệm Máy chủ SSL của Qualys (tính đến tháng 11 năm 2015) được coi là không đáng tin cậy để đếm số lần bắt tay HTTP/2.

Đáng ngạc nhiên là việc loại bỏ hoặc thay đổi tối ưu hóa HTTP/1.x lại là phần sáng tạo nhất khi triển khai HTTP/2. Có một số vấn đề cần được xem xét.

Trước khi thực hiện thay đổi, bạn nên tính đến những người dùng trình duyệt cũ hơn có thể bị ảnh hưởng. Với suy nghĩ này, có ba chiến lược chính để hoàn tác hoặc sửa đổi tối ưu hóa HTTP/1.x:

  • Mọi thứ đã sẵn sàng chưa? Nếu các ứng dụng chưa được tối ưu hóa cho HTTP/1.x hoặc có những thay đổi nhỏ được thực hiện thì bạn đã sẵn sàng sử dụng HTTP/2.
  • Cách tiếp cận hỗn hợp. Việc nối dữ liệu có thể được giảm bớt nhưng không được loại bỏ hoàn toàn. Ví dụ: một số họa tiết hình ảnh có thể vẫn còn trong khi loại bỏ dữ liệu được nhúng trong HTML.
  • Từ chối hoàn toàn tối ưu hóa HTTP/1.x (nhưng xem ghi chú và phân đoạn thân thiện với HTTP/2). Bạn chỉ có thể loại bỏ hoàn toàn việc tối ưu hóa.
Bộ nhớ đệm có một số đặc thù. Về lý thuyết, bộ nhớ đệm hoạt động hiệu quả khi áp dụng cho nhiều tệp nhỏ. Tuy nhiên, trong trường hợp này, một số lượng lớn các thao tác I/O được thực hiện. Do đó, việc kết hợp các tệp liên quan có thể có lợi cho cả hiệu suất công việc và ứng dụng. Sharding có lẽ là thách thức nhất, đồng thời, có lẽ là chiến lược tối ưu hóa HTTP/1.x thành công nhất. Sharding có thể được sử dụng để cải thiện hiệu suất của HTTP/1.x, nhưng đối với HTTP/2 (chỉ sử dụng một kết nối duy nhất), phần lớn nó bị bỏ qua.

Để sử dụng sharding kết hợp với HTTP/2, bạn cần thực hiện hai điều:

  • Đảm bảo rằng tên miền dùng để phân chia tài nguyên có cùng địa chỉ IP.
  • Đảm bảo rằng chứng chỉ ký tự đại diện được sử dụng - trong trường hợp này chứng chỉ này sẽ hợp lệ cho tất cả các tên miền được sử dụng để phân đoạn. Hoặc đảm bảo bạn có chứng chỉ đa miền thích hợp.
Thông tin chi tiết có thể được tìm thấy.

Nếu những điều kiện này được đáp ứng, việc phân chia sẽ xảy ra đối với HTTP/1.x - vì các miền khác nhau, cho phép trình duyệt tạo bộ bổ sung kết nối - và sẽ không xảy ra đối với HTTP/2, vì tên miền riêng biệtđược coi là một và kết nối có thể truy cập bất kỳ trong số chúng.

Phần kết luận

Có khả năng HTTP/2 với TLS sẽ giúp cải thiện hiệu suất trang web của bạn và cho phép người dùng yên tâm rằng kết nối của họ được an toàn. Hơn nữa, việc triển khai hỗ trợ HTTP/2 rất có thể sẽ không yêu cầu số lượng lớn cố gắng.

Các mẹo được mô tả ở trên sẽ giúp bạn đạt được hiệu suất HTTP/2 tốt nhất với ít nỗ lực nhất để bạn có thể dành thời gian còn lại để xây dựng các ứng dụng nhanh chóng, hiệu quả và an toàn.

Thẻ: Thêm thẻ

“...chúng tôi không thay đổi tất cả các phương thức HTTP, mã trạng thái và hầu hết các tiêu đề vẫn giữ nguyên. Chúng tôi chỉ thiết kế lại nó theo quan điểm tăng hiệu quả sử dụng để nó nhẹ nhàng hơn trong mối quan hệ với Internet ... "

Điều quan trọng cần lưu ý là phiên bản mới của HTTP là một phần mở rộng của phiên bản tiền nhiệm và khó có thể thay thế HTTP 1.1 trong tương lai gần. Việc triển khai HTTP/2 không tự động hỗ trợ tất cả các loại mã hóa có sẵn trong HTTP 1.1, nhưng nó chắc chắn khuyến khích việc sử dụng các lựa chọn thay thế thú vị hơn hoặc các bản cập nhật tương thích mã hóa bổ sung trong tương lai gần. Tuy nhiên, trong so sánh “HTTP/2 với HTTP 1” và “SPDY với HTTP/2”, người hùng của bài viết này là người chiến thắng về hiệu suất, bảo mật và độ tin cậy.

Điều gì đã xảy ra với HTTP 1.1?

HTTP 1.1 chỉ cho phép xử lý một yêu cầu đến trên mỗi kết nối TCP, do đó trình duyệt phải thiết lập nhiều kết nối để xử lý nhiều yêu cầu cùng một lúc.

Nhưng sử dụng song song nhiều kết nối dẫn đến tắc nghẽn TCP, do đó độc quyền tài nguyên mạng không công bằng. Các trình duyệt sử dụng nhiều kết nối để xử lý các yêu cầu bổ sung chiếm phần lớn tài nguyên mạng sẵn có, dẫn đến hiệu suất mạng kém cho những người dùng khác.

Các trình duyệt gửi nhiều yêu cầu dẫn đến sự trùng lặp dữ liệu trong các mạng truyền dẫn, do đó, yêu cầu sử dụng các giao thức bổ sung cho phép truy xuất thông tin cần thiết mà không gặp lỗi ở các nút cuối.

Ngành công nghiệp mạng thực sự đã phải khắc phục những hạn chế này bằng cách sử dụng các kỹ thuật như chia nhỏ miền, ghép nối, nhúng và tạo dữ liệu cũng như một số kỹ thuật khác. Việc sử dụng các kết nối TCP cơ bản không hiệu quả của HTTP 1.1 gây ra mức độ ưu tiên tài nguyên kém, dẫn đến suy giảm hiệu suất theo cấp số nhân khi các ứng dụng web phát triển về độ phức tạp, chức năng và kích thước.

Mạng đang phát triển không còn thiếu khả năng của công nghệ HTTP. Được phát triển từ nhiều năm trước, các tính năng chính của HTTP 1.1 tạo ra một số lỗ hổng nghiêm trọng làm suy giảm tính bảo mật và hiệu suất của các trang web và ứng dụng.

Ví dụ, với sử dụng Cookie Những kẻ tấn công có thể sử dụng lại phiên làm việc trước đó để có quyền truy cập trái phép vào mật khẩu của người dùng. Lý do là HTTP 1.1 không cung cấp công cụ xác thực đầu cuối. Nhận thấy rằng những lỗ hổng tương tự sẽ được tìm kiếm trong HTTP/2, các nhà phát triển của nó đã cố gắng cải thiện tính bảo mật của giao thức thông qua việc cải thiện việc triển khai các tính năng TLS mới.

Đặc điểm của HTTP/2

Luồng đa kênh

Một chuỗi các khung văn bản được gửi qua lại giữa máy khách và máy chủ qua HTTP/2 được gọi là “luồng”. TRONG phiên bản trước HTTP chỉ có thể được phát một luồng mỗi lần, có độ trễ nhỏ giữa các luồng khác nhau. Việc truyền tải khối lượng lớn nội dung đa phương tiện theo cách này quá kém hiệu quả và tốn nhiều tài nguyên. Để giải quyết vấn đề này, HTTP/2 sử dụng lớp khung nhị phân mới.

Lớp này cho phép bạn biến dữ liệu được truyền từ máy chủ đến máy khách thành một chuỗi các khung độc lập nhỏ có thể quản lý được. Và khi nhận được toàn bộ bộ khung, khách hàng có thể khôi phục dữ liệu được truyền ở dạng ban đầu. Sơ đồ này cũng hoạt động khi truyền theo hướng ngược lại - từ máy khách đến máy chủ.

Các định dạng khung nhị phân cho phép trao đổi đồng thời nhiều chuỗi độc lập được truyền theo cả hai hướng mà không có bất kỳ độ trễ nào giữa các luồng. Cách tiếp cận này mang lại nhiều lợi ích:

  • Các yêu cầu và phản hồi được ghép kênh song song không chặn lẫn nhau.
  • Mặc dù truyền nhiều luồng dữ liệu, một kết nối TCP duy nhất được sử dụng để sử dụng tài nguyên mạng hiệu quả nhất.
  • Không còn các thủ thuật tối ưu hóa như sprite, ghép nối, phân mảnh miền và các thủ thuật khác tác động tiêu cực đến các lĩnh vực hiệu suất mạng khác.
  • Độ trễ thấp hơn, hiệu suất mạng cao hơn và xếp hạng tốt hơn bởi các công cụ tìm kiếm.
  • Tài nguyên mạng và CNTT giúp giảm chi phí vận hành và đầu tư vốn.
Nhờ tính năng được mô tả, các gói dữ liệu từ các luồng khác nhau được trộn lẫn với nhau qua một kết nối TCP. Tại điểm cuối, các gói này sau đó được phân tách và trình bày dưới dạng các luồng dữ liệu riêng biệt. Trong HTTP 1.1 trở về trước, số lượng kết nối TCP giống nhau sẽ phải được thiết lập để truyền song song nhiều yêu cầu, đây là điểm nghẽn về hiệu suất mạng tổng thể, mặc dù thực tế là có thể truyền nhanh hơn nhiều luồng dữ liệu.

Gửi dữ liệu do máy chủ khởi tạo (Đẩy máy chủ)

Tính năng này cho phép máy chủ gửi thêm thông tin được lưu trong bộ nhớ đệm đến máy khách mà máy khách không yêu cầu nhưng có thể cần trong các yêu cầu trong tương lai. Ví dụ: nếu máy khách yêu cầu tài nguyên X, tài nguyên tham chiếu đến tài nguyên Y, thì máy chủ có thể gửi Y cùng với X mà không cần đợi yêu cầu bổ sung từ máy khách.

Tài nguyên Y nhận được từ máy chủ sẽ được lưu vào bộ nhớ đệm trên máy khách để sử dụng trong tương lai. Cơ chế này tiết kiệm chu kỳ yêu cầu-phản hồi và giảm độ trễ mạng. Server Push ban đầu xuất hiện trong giao thức SPDY. ID luồng chứa các tiêu đề giả như:truyền kích hoạt đường dẫn bởi máy chủ thông tin thêm, cần được lưu vào bộ nhớ đệm. Máy khách phải cho phép rõ ràng máy chủ phân phát các tài nguyên được lưu trong bộ nhớ đệm cho chính nó thông qua HTTP/2 hoặc hủy bỏ các luồng được khởi tạo có mã định danh đặc biệt.

Một tính năng HTTP/2 khác, được gọi là Cache Push, cho phép bạn chủ động cập nhật hoặc vô hiệu hóa bộ đệm trên máy khách. Trong trường hợp này, máy chủ có thể xác định các tài nguyên mà máy khách có thể cần nhưng thực tế nó không yêu cầu.

Việc triển khai HTTP/2 thể hiện hiệu suất cao khi làm việc với các tài nguyên được chuyển chủ động:

  • Tài nguyên đã khởi tạo được lưu trữ trong bộ đệm của máy khách.
  • Khách hàng có thể sử dụng lại các tài nguyên này trên các trang khác nhau.
  • Máy chủ có thể ghép các tài nguyên được truyền chủ động cùng với thông tin được yêu cầu trong cùng một kết nối TCP.
  • Máy chủ có thể ưu tiên các tài nguyên được chuyển chủ động. Đây là điểm khác biệt chính về hiệu suất giữa HTTP/2 và HTTP 1.
  • Máy khách có thể từ chối các tài nguyên được đẩy chủ động để duy trì hiệu quả của kho lưu trữ hoặc có thể vô hiệu hóa hoàn toàn tính năng Đẩy máy chủ.
  • Máy khách cũng có thể giới hạn số lượng luồng dữ liệu được truyền chủ động được ghép kênh đồng thời.
Các kỹ thuật dưới mức tối ưu như Nội tuyến cũng sử dụng chức năng đẩy để buộc máy chủ phản hồi các yêu cầu. Đồng thời, Server Push là một giải pháp cấp độ giao thức giúp tránh rắc rối với các thủ thuật tối ưu hóa.

Ghép kênh HTTP/2 và ưu tiên luồng dữ liệu chủ động để cải thiện hiệu suất, giống như với các luồng phản hồi yêu cầu khác. Có một cơ chế bảo mật tích hợp theo đó máy chủ phải được cấp phép trước để chủ động chuyển tài nguyên sau đó.

Giao thức nhị phân

Phiên bản mới nhất của HTTP đã trải qua những thay đổi đáng kể về khả năng và thể hiện sự chuyển đổi từ giao thức dựa trên văn bản sang giao thức nhị phân. Để hoàn thành chu trình phản hồi yêu cầu, các quy trình HTTP 1.x lệnh văn bản. HTTP/2 giải quyết các vấn đề tương tự bằng cách sử dụng các lệnh nhị phân (bao gồm các số 1 và số 0). Điều này giúp làm việc với các khung dễ dàng hơn và giúp thực hiện các lệnh có thể gây nhầm lẫn dễ dàng hơn vì chúng bao gồm văn bản và khoảng trắng tùy chọn.

Các lệnh nhị phân sẽ khó đọc hơn các lệnh văn bản tương tự, nhưng mạng sẽ dễ dàng tạo ra chúng và phân tích các khung hơn. Các ngữ nghĩa vẫn không thay đổi. Các trình duyệt sử dụng HTTP/2 chuyển đổi lệnh văn bản thành lệnh nhị phân trước khi gửi chúng lên mạng. Lớp nhị phân khung không tương thích ngược với máy khách và máy chủ sử dụng HTTP 1.x. Anh ấy là yếu tố chính, mang lại hiệu suất tăng đáng kể so với SPDY và ​​HTTP 1.x. Việc sử dụng lệnh nhị phân mang lại lợi ích gì cho các công ty Internet và dịch vụ trực tuyến:

  • Chi phí phân tích cú pháp dữ liệu thấp là một lợi thế quan trọng của HTTP/2 so với HTTP 1.
  • Ít có khả năng xảy ra lỗi.
  • Giải quyết các vấn đề bảo mật như các cuộc tấn công phân tách phản hồi phát sinh từ bản chất dựa trên văn bản của HTTP 1.x.
  • Các tính năng HTTP/2 khác được triển khai, bao gồm nén, ghép kênh, ưu tiên, kiểm soát luồng và xử lý TLS hiệu quả.
  • Sự nhỏ gọn của các lệnh giúp đơn giản hóa việc xử lý và thực hiện chúng.
  • Hiệu quả cao hơn và khả năng phục hồi tốt hơn trước các lỗi khi xử lý dữ liệu được truyền giữa máy khách và máy chủ.
  • Giảm độ trễ mạng và tăng băng thông.

Ưu tiên chủ đề

HTTP/2 cho phép khách hàng ưu tiên các luồng dữ liệu cụ thể. Mặc dù máy chủ không bắt buộc phải tuân theo các hướng dẫn như vậy của máy khách nhưng cơ chế này vẫn giúp máy chủ tối ưu hóa việc phân bổ tài nguyên mạng theo yêu cầu của người dùng cuối.

Việc ưu tiên được thực hiện bằng cách gán Phụ thuộc và Trọng số cho từng luồng. Trên thực tế, mặc dù tất cả các luồng đều phụ thuộc vào nhau nhưng chúng cũng bổ sung thêm trọng số trong phạm vi từ 1 đến 256. Chi tiết về cơ chế ưu tiên vẫn đang được thảo luận. Tuy nhiên, trong thế giới thực, máy chủ hiếm khi quản lý các tài nguyên như kết nối CPU và cơ sở dữ liệu. Chỉ riêng độ phức tạp của việc triển khai đã ngăn máy chủ thực hiện các yêu cầu ưu tiên luồng. Việc tiếp tục làm việc theo hướng này đặc biệt quan trọng đối với sự thành công lâu dài của HTTP/2 vì giao thức này cho phép xử lý nhiều luồng trong một kết nối TCP.

Việc ưu tiên sẽ giúp phân tách các yêu cầu đồng thời đến máy chủ phù hợp với nhu cầu của người dùng cuối. Và việc xử lý các luồng dữ liệu theo thứ tự ngẫu nhiên chỉ làm giảm tính hiệu quả và tiện lợi của HTTP/2. Đồng thời, cơ chế ưu tiên luồng được tính toán kỹ lưỡng và rộng rãi sẽ mang lại cho chúng ta những lợi thế sau:

  • Sử dụng hiệu quả tài nguyên mạng.
  • Giảm thời gian giao hàng cho các yêu cầu nội dung chính.
  • Tăng tốc độ tải trang.
  • Tối ưu hóa việc truyền dữ liệu giữa máy khách và máy chủ.
  • Giảm tác động tiêu cực của sự chậm trễ mạng.

Nén tiêu đề trạng thái

Để để lại ấn tượng tốt nhất cho người dùng, các trang web hiện đại phải phong phú về nội dung và đồ họa. HTTP là một giao thức không trạng thái, nghĩa là mỗi yêu cầu của máy khách phải chứa tối đa thêm thông tin, được yêu cầu bởi máy chủđể thực hiện thao tác tương ứng. Kết quả là các luồng dữ liệu chứa nhiều khung lặp lại vì máy chủ không phải lưu trữ thông tin từ các yêu cầu trước đó của khách hàng.

Nếu một trang web chứa nhiều nội dung đa phương tiện thì khách hàng sẽ gửi một loạt các khung có tiêu đề gần như giống hệt nhau, điều này làm tăng độ trễ và dẫn đến tiêu thụ quá nhiều tài nguyên mạng vô hạn. Nếu không tối ưu hóa hơn nữa việc kết hợp các luồng dữ liệu được ưu tiên, chúng tôi sẽ không thể đạt được các tiêu chuẩn hiệu suất đồng thời mong muốn.

HTTP/2 giải quyết vấn đề này bằng cách nén một số lượng lớn khung tiêu đề dư thừa. Việc nén được thực hiện bằng thuật toán HPACK, nó đơn giản và phương pháp an toàn. Máy khách và máy chủ duy trì danh sách các tiêu đề được sử dụng trong các yêu cầu trước đó.

HPACK nén giá trị của từng tiêu đề trước khi gửi đến máy chủ, sau đó máy chủ tra cứu thông tin được mã hóa trong danh sách các giá trị đã nhận trước đó để khôi phục toàn bộ dữ liệu tiêu đề. Nén HPACK mang lại lợi ích hiệu suất đáng kinh ngạc và cũng cung cấp:

  • Ưu tiên luồng hiệu quả.
  • Sử dụng hiệu quả các cơ chế ghép kênh.
  • Giảm chi phí khi sử dụng tài nguyên. Đây là một trong những vấn đề được thảo luận đầu tiên khi so sánh HTTP/2 với HTTP 1 và SPDY.
  • Mã hóa các tiêu đề lớn và được sử dụng thường xuyên để bạn không phải gửi toàn bộ khung cùng với tiêu đề. Kích thước truyền của mỗi luồng giảm nhanh chóng.
  • Chống lại các cuộc tấn công như CRIME - khai thác luồng dữ liệu với các tiêu đề được nén.

Sự khác biệt giữa HTTP 1.x và SPDY

Ngữ nghĩa cốt lõi của ứng dụng HTTP vẫn không thay đổi trong phiên bản HTTP/2 mới nhất, bao gồm mã trạng thái, URI, kỹ thuật và tệp tiêu đề. HTTP/2 dựa trên SPDY, được tạo ra trong Google thay thế HTTP 1.x. Sự khác biệt chính nằm ở cơ chế xử lý các yêu cầu máy khách-máy chủ. Bảng này cho thấy những khác biệt chính giữa HTTP 1.x, SPDY và ​​HTTP/2:
HTTP 1.x SPDY HTTP2
Yêu cầu SSL. SSL không bắt buộc nhưng được khuyến khích.
Mã hóa chậm. Mã hóa nhanh. Mã hóa thậm chí còn nhanh hơn.
Một yêu cầu máy khách-máy chủ cho mỗi kết nối TCP. Nhiều yêu cầu máy khách-máy chủ trên mỗi kết nối TCP. Chúng được thực hiện đồng thời trên một máy chủ. Ghép kênh nhiều máy chủ. Triển khai trên nhiều máy chủ trong một phiên bản.
Không nén tiêu đề. Nén tiêu đề đã được giới thiệu. Các thuật toán nén tiêu đề cải tiến được sử dụng để cải thiện hiệu suất và bảo mật.
Không có ưu tiên chủ đề. Ưu tiên chủ đề đã được giới thiệu. Cải thiện cơ chế ưu tiên luồng.

Cách HTTP/2 hoạt động với HTTPS

HTTPS được sử dụng để thiết lập Kết nối mạng mức độ bảo mật cao, đóng vai trò quan trọng khi xử lý thông tin quan trọng của người dùng và doanh nghiệp. Mục tiêu chính của những kẻ tấn công là các ngân hàng xử lý các giao dịch tài chính và các tổ chức chăm sóc sức khỏe tích lũy hồ sơ y tế. HTTPS hoạt động như một lớp bảo vệ chống lại các mối đe dọa mạng dai dẳng, đồng thời chống lại các cuộc tấn công tinh vi nhằm vào các mục đích có giá trị. mạng công ty, không chỉ vì lý do an toàn.

Hỗ trợ trình duyệt cho HTTP/2 bao gồm mã hóa HTTPS và thực sự cải thiện Tổng hiệu suấtđảm bảo tính bảo mật khi làm việc với HTTPS. Các tính năng chính của HTTP/2 để đảm bảo tính bảo mật của truyền thông kỹ thuật số trong môi trường mạng nhạy cảm là:

  • ít bắt tay TLS hơn,
  • tiêu thụ ít tài nguyên hơn ở phía máy khách và máy chủ,
  • Cải thiện khả năng sử dụng lại các phiên web hiện có nhưng không có lỗ hổng của HTTP 1.x.

HTTPS không chỉ được sử dụng ở các công ty nổi tiếng và để đảm bảo an ninh mạng. Giao thức này cũng hữu ích cho chủ sở hữu các dịch vụ trực tuyến, các blogger thông thường, các cửa hàng trực tuyến và thậm chí cả người dùng mạng xã hội. HTTP/2 yêu cầu phiên bản mới nhất, hầu hết phiên bản an toàn TLS, vì vậy tất cả các cộng đồng trực tuyến, chủ doanh nghiệp và quản trị viên web phải đảm bảo trang web của họ sử dụng HTTPS theo mặc định.

Các quy trình phổ biến để thiết lập HTTPS bao gồm sử dụng gói lưu trữ web, mua, kích hoạt và cài đặt chứng chỉ bảo mật cũng như cập nhật trang web để có thể sử dụng HTTPS.

Ưu điểm chính của HTTP/2

Ngành công nghiệp mạng phải thay thế HTTP 1.x lỗi thời bằng một giao thức khác có lợi cho người dùng bình thường. Việc chuyển đổi từ HTTP 1.x sang HTTP/2 gần như hoàn toàn là do độ phóng đại tối đa lợi ích công nghệ tiềm năng để đáp ứng mong đợi hiện đại.

Từ quan điểm của người dùng thương mại điện tử và Internet, càng có nhiều nội dung không liên quan, giàu phương tiện trên Internet thì tốc độ càng chậm.

HTTP/2 được tạo ra có tính đến việc tăng hiệu quả trao đổi dữ liệu giữa máy khách và máy chủ, cho phép các doanh nhân tăng mức độ bao phủ các phân khúc thị trường của họ và người dùng có quyền truy cập nhanh hơn vào nội dung chất lượng. Trong số những thứ khác, ngày nay web có nhiều tình huống hơn bao giờ hết.

Tốc độ truy cập Internet khác nhau tùy thuộc vào mạng cụ thể và vị trí địa lý. Tỷ lệ người dùng di động đang tăng nhanh, điều này đòi hỏi phải đảm bảo tốc độ Internet đủ cao trên các thiết bị di động ở mọi dạng thức, ngay cả khi chúng bị quá tải. mạng di động không thể cạnh tranh với băng thông rộng. Giải pháp hoàn chỉnh cho vấn đề này là HTTP/2, là sự kết hợp của các cơ chế truyền dữ liệu và mạng được sửa đổi và thiết kế lại hoàn toàn. Ưu điểm chính của HTTP/2 là gì?

Hiệu suất mạng

Khái niệm này phản ánh hiệu quả tích lũy của tất cả các đổi mới HTTP/2. Kết quả điểm chuẩn (xem chương "So sánh hiệu suất HTTPS, SPDY và ​​HTTP/2") cho thấy hiệu suất tăng lên khi sử dụng HTTP/2 so với các phiên bản tiền nhiệm và các giải pháp thay thế.

Khả năng gửi và nhận nhiều dữ liệu hơn trong mỗi chu kỳ giao tiếp giữa máy khách và máy chủ của giao thức không phải là một cách tối ưu hóa mà là một lợi ích thực sự, có thể truy cập và thiết thực của HTTP/2. Để tương tự, chúng ta có thể so sánh một đoàn tàu chân không với một đoàn tàu thông thường: việc không có ma sát và lực cản không khí cho phép phương tiện giao thông di chuyển nhanh hơn, chở nhiều hành khách hơn và tận dụng tốt hơn các kênh có sẵn mà không cần lắp đặt động cơ mạnh hơn. Trọng lượng của tàu cũng giảm và tính khí động học của nó được cải thiện.

Các công nghệ như ghép kênh giúp truyền tải nhiều dữ liệu hơn cùng một lúc. Giống như một chiếc máy bay chở khách cỡ lớn, có nhiều tầng chật cứng ghế ngồi.

Điều gì xảy ra khi cơ chế truyền dữ liệu loại bỏ mọi rào cản đối với hiệu suất mạng? Tốc độ trang web cao có tác dụng phụ: người dùng cảm thấy thích thú hơn, tối ưu hóa hơn dịch vụ tìm kiếm, các nguồn lực được sử dụng hiệu quả hơn, lượng khán giả và doanh số bán hàng ngày càng tăng, v.v.

May mắn thay, việc triển khai HTTP/2 thực tế hơn nhiều so với việc tạo đường hầm chân không cho các chuyến tàu chở khách lớn.

Hiệu suất mạng di động

Mỗi ngày, hàng triệu người dùng truy cập Internet từ thiết bị di động của họ. Chúng ta đang sống trong “kỷ nguyên hậu PC”, với nhiều người sử dụng điện thoại thông minh làm thiết bị chính để truy cập các dịch vụ trực tuyến và thực hiện hầu hết các tác vụ điện toán thông thường khi đang di chuyển, thay vì ngồi trước màn hình máy tính để bàn trong thời gian dài.

HTTP/2 được thiết kế với xu hướng hiện đại Sử dụng mạng. Nhiệm vụ cân bằng thông lượng nhỏ Internet di độngđược giải quyết tốt bằng cách giảm độ trễ thông qua ghép kênh và nén tiêu đề. Nhờ phiên bản mới của giao thức, hiệu suất và tính bảo mật của việc trao đổi dữ liệu trên thiết bị di động đạt đến mức độ đặc trưng của máy tính để bàn. Điều này ngay lập tức có tác động tích cực đến khả năng tiếp cận đối tượng tiềm năng của một doanh nghiệp trực tuyến.

Internet rẻ hơn

Kể từ khi sáng tạo Mạng toàn cầu chi phí sử dụng Internet đã giảm nhanh chóng. Mục tiêu chính của sự phát triển công nghệ mạng luôn là mở rộng khả năng truy cập và tăng tốc độ của nó. Tuy nhiên, việc giảm giá dường như đã bị đình trệ, đặc biệt là trước những cáo buộc về sự độc quyền của các nhà cung cấp dịch vụ viễn thông.

Thông lượng tăng lên và hiệu quả trao đổi dữ liệu tăng lên khi triển khai HTTP/2 sẽ cho phép các nhà cung cấp giảm chi phí vận hành mà không làm giảm tốc độ truy cập. Đổi lại, việc giảm chi phí vận hành sẽ cho phép các nhà cung cấp quảng bá mình tích cực hơn ở phân khúc giá thấp, cũng như cung cấp tốc độ truy cập cao hơn trong khuôn khổ các mức thuế hiện hành.

Phạm vi phủ sóng rộng rãi

Các khu vực đông dân ở châu Á và châu Phi vẫn thiếu khả năng truy cập Internet ở tốc độ chấp nhận được. Các nhà cung cấp cố gắng thu được lợi nhuận tối đa bằng cách chỉ cung cấp dịch vụ của họ ở các thành phố lớn và các khu vực phát triển. Nhờ những ưu điểm của HTTP/2, có thể giảm tải cho mạng bằng cách phân bổ một số tài nguyên và băng thông cho cư dân ở các khu vực xa xôi và kém phát triển.

Độ phong phú của phương tiện

Ngày nay, người dùng Internet thực tế yêu cầu nội dung và dịch vụ phong phú đa phương tiện với khả năng tải trang tức thì. Đồng thời, để cạnh tranh thành công, chủ website cần thường xuyên cập nhật nội dung của mình. Chi phí của cơ sở hạ tầng tương ứng không phải lúc nào cũng phù hợp với các công ty khởi nghiệp Internet, ngay cả khi họ sử dụng dịch vụ đăng ký đám mây. Những ưu điểm và tính năng công nghệ của HTTP/2 có thể sẽ không giúp giảm đáng kể kích thước tệp nhưng chúng sẽ loại bỏ một vài byte khỏi chi phí khi truyền nội dung đa phương tiện “nặng” giữa máy khách và máy chủ.

Cải thiện trải nghiệm Internet di động

Các công ty trực tuyến có tư duy tiến bộ đang theo đuổi chiến lược Mobile-First để tiếp cận hiệu quả lượng khán giả di động đang tăng nhanh. Có lẽ hạn chế chính ảnh hưởng đến việc sử dụng Internet di động không phải là đặc điểm nổi bật nhất của các thành phần phần cứng của điện thoại thông minh và máy tính bảng. Điều này dẫn đến sự chậm trễ lâu hơn trong việc xử lý yêu cầu. HTTP/2 cho phép bạn giảm thời gian tải xuống và độ trễ mạng xuống mức chấp nhận được.

Sử dụng mạng hiệu quả hơn

Nội dung đa phương tiện “nặng” và các trang web có thiết kế phức tạp dẫn đến mức tiêu thụ tài nguyên tăng lên đáng kể khi xử lý các yêu cầu trình duyệt của máy khách và máy chủ. Mặc dù các nhà phát triển web đã phát triển các phương pháp tối ưu hóa có thể chấp nhận được nhưng sự xuất hiện của một giải pháp ổn định và đáng tin cậy dưới dạng HTTP/2 là điều không thể tránh khỏi. Nén tiêu đề, chuyển tiếp chủ động máy chủ, phụ thuộc luồng và ghép kênh đều là những tính năng chính giúp cải thiện hiệu quả mạng.

Sự an toàn

Lợi ích của HTTP/2 không chỉ dừng lại ở hiệu suất. Thuật toán HPACK cho phép bạn bỏ qua các mối đe dọa phổ biến nhắm vào các giao thức văn bản cấp ứng dụng. Để bảo vệ dữ liệu được truyền giữa máy khách và máy chủ, HTTP/2 sử dụng phương pháp Bảo mật theo cách tối nghĩa: các lệnh được trình bày ở dạng nhị phân và nén siêu dữ liệu tiêu đề HTTP được sử dụng. Ngoài ra, giao thức còn hỗ trợ mã hóa đầy đủ và yêu cầu sử dụng phiên bản cải tiến của Bảo mật lớp vận chuyển (TLS1.2).

Sự đổi mới

HTTP/2 là hiện thân của ý tưởng về một mạng hiệu suất cao. Giao thức này là nền tảng của thế giới mạng như chúng ta biết ngày nay. Những thay đổi do HTTP/2 đưa ra chủ yếu dựa trên các tính năng của SPDY, đây là một cải tiến lớn so với HTTP 1.x. Và trong tương lai gần, HTTP/2 sẽ thay thế hoàn toàn cả SPDY và những phiên bản trước HTTP. Các nhà phát triển web sẽ có thể loại bỏ các thủ thuật tối ưu hóa phức tạp khi tạo các trang web và dịch vụ hiệu suất cao.

Lợi ích SEO của HTTP/2

Tiếp thị SEO nằm ở đâu đó giữa khoa học và nghệ thuật. Do sự phức tạp ngày càng tăng của các thuật toán độc quyền được sử dụng công cụ tìm kiếm phổ biến, các kỹ thuật SEO không trung thực truyền thống không còn cho phép thao túng kết quả tìm kiếm. Và theo đó, các công ty trực tuyến cần thay đổi chiến lược tiếp thị của mình. Bạn cần đầu tư khôn ngoan vào các trang web được xây dựng từ đầu, được thiết kế cẩn thận, được tối ưu hóa không chỉ về tốc độ mà còn để có hiệu suất, bảo mật và Kinh nghiệm người dùng. Đây là những thuộc tính thích hợp hơn cho phép bạn hình thành kết quả tìm kiếm với nhiều nhất thông tin chính xác và các trang web dễ sử dụng cho toàn bộ đối tượng mục tiêu.

Quy trình tiêu chuẩn Tối ưu hóa công cụ tìm kiếm vượt xa các chiến thuật tiếp thị đầu cuối. Bây giờ chúng bao gồm toàn bộ chu trình trao đổi dữ liệu giữa máy khách và máy chủ. SEO, những người trước đây là nhân vật chủ chốt trong các nhóm tiếp thị trực tuyến, đã mất vị trí của mình với sự ra đời của các công nghệ truyền thông kỹ thuật số mới. Và sự thống trị của HTTP/2 trong số đó cho thấy một sự thay đổi mang tính kiến ​​tạo đang buộc các nhà phát triển web và nhà tiếp thị quay trở lại bàn vẽ.

Phê bình yếu tố quan trọng SEO ngày nay là triển khai và tối ưu hóa cơ sở hạ tầng cho HTTP/2 và hứa hẹn mang lại những lợi ích về hiệu suất. Các doanh nghiệp trực tuyến thiếu cơ sở người dùng hữu cơ đầy đủ không thể bỏ qua HTTP/2 và do đó những cải tiến từ góc độ SEO. Suy cho cùng, các công ty này phải cạnh tranh trên cơ sở đổi mới với các đế chế kinh doanh trực tuyến đang phát triển và một dịch vụ trực tuyến được xếp hạng cao sẽ còn tăng cao hơn nữa nhờ triển khai HTTP/2 ở phía máy chủ.

So sánh hiệu suất của HTTPS, SPDY và ​​HTTP/2

Kết quả benchmark cho thấy rõ tình hình cải thiện hiệu suất trong giao thức mới.

Kết quả điểm chuẩn HTTP/2 xác nhận rằng tính năng nén tiêu đề, chủ động chuyển tiếp máy chủ và các cơ chế khác dùng để tăng tốc độ tải trang thực sự được triển khai một cách nhất quán.

Chi tiết kiểm tra:

Kết quả của bài kiểm tra này cho chúng ta biết những điều sau:

  • Kích thước của tiêu đề phản hồi của máy khách và yêu cầu của máy chủ: HTTP/2 chứng tỏ rằng việc sử dụng tính năng nén có thể làm giảm đáng kể kích thước tiêu đề. Trong trường hợp này, SPDY chỉ giảm tiêu đề phản hồi của máy chủ cho của yêu cầu này. HTTPS hoàn toàn không giảm tiêu đề.
  • Kích thước tin nhắn phản hồi của máy chủ: Kích thước phản hồi của máy chủ HTTP/2 lớn hơn nhưng nó sử dụng mã hóa mạnh hơn.
  • Số lượng kết nối TCP được sử dụng: Khi xử lý nhiều yêu cầu đồng thời (ghép kênh), HTTP/2 và SPDY sử dụng ít tài nguyên mạng hơn, do đó độ trễ thấp hơn.
  • Tốc độ tải trang: HTTP/2 luôn nhanh hơn SPDY. HTTPS chậm hơn đáng kể do thiếu khả năng nén tiêu đề và máy chủ chủ động gửi dữ liệu.

Hỗ trợ và khả năng truy cập HTTP/2 của trình duyệt

HTTP/2 đã có thể được sử dụng với sự hỗ trợ đầy đủ từ máy chủ và trình duyệt, bao gồm cả thiết bị di động. Các công nghệ sử dụng HTTP 1.x sẽ không bị gián đoạn khi triển khai HTTP/2 trên trang web của bạn. Nhưng chúng sẽ cần được cập nhật nhanh chóng để hỗ trợ giao thức mới. Hãy coi các giao thức mạng là ngôn ngữ giao tiếp. Bạn chỉ có thể giao tiếp bằng ngôn ngữ mới khi bằng cách nào đó bạn hiểu nhau. Tương tự ở đây: máy khách và máy chủ cần được cập nhật để hỗ trợ trao đổi dữ liệu bằng giao thức HTTP/2.

Hỗ trợ khách hàng

Người dùng không cần phải lo lắng về việc thiết lập hỗ trợ HTTP/2 trong trình duyệt của họ - chính thức và di động. Chrome và Firefox đã hỗ trợ công nghệ này từ lâu và trong Safari, hỗ trợ HTTP/2 đã xuất hiện vào năm 2014. Trong IE, giao thức này chỉ được hỗ trợ bắt đầu từ Windows 8.

Nền tảng trình duyệt di động, bao gồm Trình duyệt Android, Chrome dành cho Android và iOS cũng như Safari trong iOS8 trở lên, đã hỗ trợ HTTP/2. Nên cài đặt những cái mới nhất để đề phòng phiên bản ổn định trình duyệt trên thiết bị di động và máy tính để bàn để có được lợi ích bảo mật và hiệu suất tối đa.

Hỗ trợ máy chủ: Apache và Nginx

Chủ sở hữu các dịch vụ trực tuyến chạy tại chỗ hoặc trên đám mây phải cập nhật và định cấu hình máy chủ của họ để thêm hỗ trợ HTTP/2. Theo sự tương tự về ngôn ngữ ở trên, người dùng chỉ có thể truy xuất dữ liệu từ máy chủ qua HTTP/2 vì chúng đã được cập nhật và định cấu hình cho mục đích này.

Các máy chủ Nginx, chiếm 66% tổng số máy chủ web đang hoạt động, tự hào có khả năng hỗ trợ tích hợp cho HTTP/2. Và để cung cấp hỗ trợ trình duyệt cho HTTP/2 trên Apache, bạn cần sử dụng mô-đun mod_spdy. Nó được Google phát triển để giới thiệu hỗ trợ Apache 2.2 cho các tính năng như ghép kênh và nén tiêu đề. Phần mềm này đã được tặng cho Quỹ phần mềm Apache.

Làm cách nào để bắt đầu sử dụng HTTP/2?

Để định cấu hình HTTP/2 trên trang web của bạn, hãy sử dụng các hướng dẫn đơn giản sau:
  1. Kiểm tra xem HTTPS đã được bật chưa:
    • Mua chứng chỉ SSL hoặc TLS từ một tổ chức có uy tín.
    • Kích hoạt chứng chỉ.
    • Cài đặt chứng chỉ.
    • Cập nhật máy chủ của bạn để bật HTTPS.
  2. Xác minh rằng cơ sở hạ tầng mạng cơ bản có hỗ trợ HTTP/2 ở cấp phần mềm máy chủ. Máy chủ Nginx có hỗ trợ riêng; nó xuất hiện trong Apache vào tháng 10 năm 2015 (trong phiên bản 2.4). Trong các phiên bản trước, các mô-đun bổ sung phải được cài đặt để hỗ trợ HTTP/2.
  3. Cập nhật, cấu hình và kiểm tra máy chủ của bạn. Các quy trình cấu hình và thử nghiệm cho máy chủ Apache được mô tả. Liên hệ với nhà cung cấp dịch vụ lưu trữ của bạn và đảm bảo trang web của bạn đã sẵn sàng HTTP/2.
  4. Để kiểm tra xem cấu hình HTTP/2 của bạn có đúng hay không, hãy sử dụng công cụ này.

Phần kết luận

Sự thống trị và ưu việt tất yếu của HTTP/2 đang chờ đợi chúng ta. Giao thức lớp ứng dụng dường như mang di sản của HTTP 1.x, giao thức này từng biến đổi web bằng khả năng truyền dữ liệu mang tính cách mạng. Nhưng HTTP/2 thể hiện tính ưu việt về mặt công nghệ lớn hơn nhiều so với phiên bản tiền nhiệm của nó so với HTTP 1.x vào thời đó.

Tuy nhiên, sử dụng HTTP/2 chỉ là một bước để tăng tốc độ tải trang. Hướng dẫn tối ưu hóa tốc độ trang web cho người mới bắt đầu của chúng tôi giải thích cách xây dựng trang web nhanh, cách loại bỏ tắc nghẽn về hiệu suất và lợi ích kinh doanh chiến lược của hiệu suất trang web vượt trội.

Thẻ: Thêm thẻ

18.07.2017 11:41

HTTP/2 là phiên bản thứ hai của giao thức HTTP nổi tiếng. Tên đầy đủ của giao thức này trông giống như HTTP/2.0. Như các bạn đã biết, HTTP – hay Hypertex Transfer Protocol – là giao thức được sử dụng để truyền siêu văn bản. Nói cách khác, nhờ HTTP, các trang web được tải và hiển thị thông qua trình duyệt tới người dùng Internet.

Giao thức HTTP đã xuất hiện từ lâu: phiên bản đầu tiên - thậm chí không phải phiên bản đầu tiên mà là 0.9 - được phát hành vào năm 1991. Tám năm sau, vào năm 1999, phiên bản HTTP được sử dụng tích cực ngày nay đã xuất hiện - HTTP/1.1. Có vẻ như nếu mọi thứ đều ổn thì tại sao phải thay đổi bất cứ điều gì? Nhưng cũng như mọi thứ đang trong quá trình phát triển, sự tiến bộ không đứng yên, mọi thứ đều thay đổi và đòi hỏi phải thay đổi.

Phát triển

Việc phát triển phiên bản mới của giao thức được thực hiện bởi nhóm làm việc HTTPbis từ Lực lượng đặc nhiệm kỹ thuật Internet (Hội đồng kỹ thuật Internet, nơi phát triển các tiêu chuẩn Internet). Nó được thành lập vào năm 2007 đặc biệt để thực hiện dự án này. Tuy nhiên hành động tích cực bắt đầu xảy ra chỉ 5 năm sau, vào năm 2012.

Cơ sở của HTTP/2 là giao thức SPDY (có thể giải mã là “speedy” - nhanh). Người phát triển vết thủng này là công ty Google- đã tạo nó để giảm thời gian tải trang web. Đặc biệt, giao thức SPDY cho phép bạn ưu tiên và ghép nhiều lần truyền tệp để mỗi máy khách chỉ cần một kết nối.

Một trong những thành viên của nhóm làm việc, Daniel Stenberg, đã xuất bản một tài liệu vào mùa xuân năm 2014, trong đó nói về lý do tại sao dự án này lại bắt đầu ngay từ đầu và nó đang diễn ra như thế nào. Tài liệu này cũng có sẵn bằng tiếng Nga: https://bagder.gitbooks.io/http2-explained/ru/

Dưới đây là những điểm được liệt kê ngắn gọn trong phần mô tả khái niệm:

  • Mô hình HTTP phải được hỗ trợ;
  • các liên kết http:// và https:// vẫn được giữ nguyên, không cần thêm lược đồ mới;
  • máy chủ và máy khách sử dụng HTTP/1 phải được ủy quyền cho máy chủ HTTP/2;
  • Khả năng HTTP/2 phải được chuyển đổi thành HTTP/1.1 bằng proxy;
  • giảm số lượng phần tùy chọn trong giao thức;
  • thiếu các phiên bản nhỏ trong HTTP/2; Giao thức HTTP/3 sẽ được phát triển nếu cần thiết.

Đổi mới

Mục tiêu chính của việc phát triển giao thức mới là tăng tốc độ tải trang. Vì vậy, các nhà phát triển cũng nhằm mục đích loại bỏ một số yếu tố cản trở năng suất.

HTTP/2 là giao thức nhị phân. Sự lựa chọn theo hướng nhị phân được thực hiện để làm cho việc hình thành các gói trở nên dễ dàng và đơn giản hơn. Đặc biệt, nó giúp việc phân tách các phần được liên kết với giao thức và các phần được liên kết với gói dữ liệu trở nên dễ dàng hơn (vấn đề này xuất hiện trong HTTP/1).

Ghép kênh luồng- đây là điều trọng tâm chính trong sự phát triển mới. Nếu trước đây các gói thuộc nhiều luồng được phân phối riêng biệt thì với giao thức HTTP/2, các gói trong một kết nối sẽ được trộn lẫn và tách biệt ở phía bên kia.

Hơn nữa, mỗi luồng có trọng lượng riêng hay nói cách khác là mức độ ưu tiên để bạn có thể hiểu luồng nào được coi là quan trọng hơn và luồng nào ít quan trọng hơn. Điều này có liên quan trong các tình huống có hạn chế về tài nguyên và máy chủ buộc phải chọn các luồng sẽ được gửi trước.

HTTP/2 sử dụng khung nhị phân, có thể giúp xử lý luồng dễ dàng hơn. Đặc biệt, khung ƯU TIÊN cho phép bạn chỉ ra luồng nào phụ thuộc vào một luồng nhất định, nghĩa là tạo một sơ đồ nhất định, một cây ưu tiên biểu thị mối quan hệ giữa chúng. Trong trường hợp này, tầm quan trọng của dòng chảy có thể thay đổi linh hoạt. Theo nghĩa thực tế, điều này cho phép bạn, chẳng hạn, chỉ định hình ảnh nào trên trang mà bạn muốn trình duyệt tải trước.

Đáng giá riêng câu hỏi nén. HTTP là một giao thức không trạng thái, có nghĩa là nó là giao thức có thể lặp lại. Trong thực tế, điều này được thể hiện ở chỗ nếu một yêu cầu về một số tài nguyên (ví dụ: hình ảnh) được gửi đến máy chủ, điều này sẽ dẫn đến một loạt yêu cầu gần như giống hệt nhau. Vì vậy, việc nén là cần thiết là điều hợp lý.

Tuy nhiên, ở đây cũng có những cạm bẫy. Đặc biệt, tính năng nén HTTPS và SPDY dễ bị tấn công bởi cuộc tấn công BREACH (Trinh sát và trích xuất trình duyệt thông qua nén thích ứng siêu văn bản), khai thác các lỗ hổng trong thuật toán nén gzip/DEFLATE và cuộc tấn công CRIME (Rò rỉ thông tin tỷ lệ nén được thực hiện dễ dàng), cũng khai thác các thuật toán nén dữ liệu.

Kết quả là nhóm HTTPbis đã tạo HPACK là một giao thức chuyên dụng để nén các tiêu đề HTTP/2. Khi sử dụng giao thức HTTP/2 tiêu đề dịch vụ(để tải các thành phần trang) được truyền đi dưới dạng nén, do đó làm giảm lượng tài nguyên cần thiết cho hoạt động đó.

Một khung hữu ích khác là RST_STEAM. Nó có nhiệm vụ hủy việc gửi tin nhắn, điều này được sử dụng để giảm băng thông lãng phí và tránh bị rớt kết nối. Ví dụ: khung này phù hợp nếu bạn cần nhanh chóng gắn cờ một luồng đã gửi mà hóa ra là không cần thiết.

HTTP/2 cho phép bạn tăng tính bảo mật của tài nguyên, nhưng trước khi chuyển sang HTTP/2, trước tiên bạn cần chuyển sang HTTPS (mặc dù bây giờ, xin vui lòng, đại đa số đã làm điều này).

Tuy nhiên, HTTP/2 tương thích ngược với HTTP/1, do đó không cần phải vội chuyển trang web sang giao thức mới. Nhưng tất nhiên trong tương lai, bạn có thể nhận thấy tốc độ tải trang web của mình bị chậm lại, bởi vì... các tối ưu hóa hoạt động cho HTTP/1 có thể không còn hoạt động cho phiên bản thứ hai của giao thức này.

HTTP/2 được hỗ trợ bởi tất cả các trình duyệt chính: Chrome, Firefox, Opera, Edge, Safari.
Bạn cũng nên nhanh chóng chuyển sang HTTP/2 đối với những người có nhiều lưu lượng truy cập trên thiết bị di động.

Chuyển sang HTTP/2

Đối với những người quan tâm đến việc chuyển sang HTTP/2, tôi khuyên bạn nên đọc tài liệu này trên tiếng anh: https://cdn.wp.nginx.com/wp-content/uploads/2015/09/NGINX_HTTP2_White_Paper_v4.pdf

Điểm mấu chốt

HTTP/2 là giao thức một mặt chứa đựng tính kế thừa của HTTP/1, mặt khác có rất nhiều ưu điểm trong việc truyền dữ liệu, dẫn đến sự vượt trội đáng kể của phiên bản mới của giao thức so với phiên bản cũ. người tiền nhiệm.

Giao thức truyền siêu văn bản ( HTTP) quản lý kết nối giữa máy chủ và trình duyệt. Lần đầu tiên kể từ năm 1999 chúng tôi nhận được phiên bản mới của giao thức này và nó hứa hẹn mang đến cho mọi người trang web nhanh hơn đáng kể.

Tôi sẽ kể cho bạn nghe về tính năng chính giao thức mới, Tôi sẽ xem xét khả năng tương thích của nó với trình duyệt và máy chủ.

Tóm tắt lịch sử của HTTP

HTTP là một giao thức cũ ban đầu được xác định vào năm 1991 và lần cuối cùng được thay đổi nghiêm trọng ở phiên bản HTTP/1.1.

Các trang web năm 1999 rất khác so với những trang web chúng tôi phát triển ngày nay. Bây giờ để hiển thị trang chủ Trang web trung bình cần 1,9 MB. Điều này tải xuống hơn 100 tài nguyên riêng lẻ, từ hình ảnh và phông chữ đến Tệp JavaScript và CSS.

HTTP/1.1 không hoạt động tốt với một lượng lớn tài nguyên. Do đó, các phương pháp tối ưu hóa tốt nhất nhằm mục đích cải thiện hiệu suất của phiên bản giao thức này.

SPDY

Năm 2009, hai kỹ sư của Google đã nói chuyện về một dự án nghiên cứu có tên SPDY. Dự án này nhằm giải quyết các vấn đề liên quan đến hoạt động của giao thức HTTP/1.1. SPDY cho phép bạn:

  • Sử dụng các yêu cầu cạnh tranh trên cùng một kết nối TCP ( ghép kênh).
  • Trình duyệt đặt mức độ ưu tiên để các tài nguyên quan trọng đối với việc hiển thị trang được tải trước.
  • Nén và thu nhỏ tiêu đề HTTP
  • Triển khai công nghệ đẩy máy chủ, trong đó máy chủ có thể gửi tới trình duyệt tài nguyên quan trọng trước khi anh ta được yêu cầu làm như vậy.

Ngoài ra, SPDY yêu cầu kết nối phải được mã hóa ( HTTPS) giữa trình duyệt và máy chủ.

SPDY không thay thế HTTP. Nó giống một đường hầm giao thức hơn và sửa đổi quá trình gửi yêu cầu và phản hồi HTTP. Nó yêu cầu sự hỗ trợ cả ở phía máy chủ và phía máy khách. Nhờ sự hỗ trợ có sẵn trong NGNIX và các gói của Google dành cho Apache, SPDY đã được sử dụng rộng rãi. trong đó phiên bản hiện đại các trình duyệt chính hoàn toàn ủng hộ nó.

Hỗ trợ SPDY trình duyệt theo " Tôi có thể sử dụng được không"

HTTP/2

Hỗ trợ SPDY đã bị ngừng trong Edge do Microsoft đã triển khai hỗ trợ cho HTTP/2 trong trình duyệt mới, phiên bản mới nhất của giao thức HTTP. Nhưng các trình duyệt hiện đại khác vẫn hỗ trợ SPDY.


Hỗ trợ HTTP /2 trình duyệt theo " Tôi có thể sử dụng được không"

HTTP/2 được xây dựng dựa trên sự thành công của SPDY, được sử dụng làm nền tảng khởi chạy cho giao thức mới. Đồng thời, hầu hết các nhiệm vụ SPDY cũng được triển khai trong HTTP/2. Yêu cầu kết nối HTTPS đã bị xóa. Mặc dù vậy, các nhà phát triển của tất cả các trình duyệt đã quyết định chỉ triển khai hỗ trợ HTTP/2 cho TLS ( https) các kết nối. Do đó, việc sử dụng HTTP/2 có nghĩa là trang web đang sử dụng HTTPS.

Đặc tả HTTP/2 đã được hoàn thiện vào tháng 2 năm 2015. Một năm sau, nó được các trình duyệt hỗ trợ hoàn hảo. Giống như SPDY, HTTP/2 yêu cầu hỗ trợ cả trên trình duyệt và trên máy chủ.

Hiện đã có nhiều triển khai cho máy chủ. Bạn có thể theo dõi họ tại Tham chiếu HTTP/2.

Các trang web sẽ phải được thay đổi?

HTTP/2 tương thích ngược với HTTP/1.1, vì vậy có thể bỏ qua nó và mọi thứ sẽ tiếp tục hoạt động như trước. Sự thay đổi giao thức là vô hình đối với người dùng. Nhiều độc giả của bài viết này đã sử dụng giao thức khác HTTP/1.1 trong nhiều năm. Ví dụ: nếu bạn có tài khoản với dịch vụ email Gmail và bạn sử dụng trình duyệt Google Chrome để truy cập nó.

Nhưng theo thời gian, khi nhiều máy chủ và trình duyệt được cập nhật lên HTTP/2, trang web của bạn, sau khi được tối ưu hóa theo các phương pháp hay nhất, sẽ bắt đầu chậm so với tài nguyên Internet được tối ưu hóa cho giao thức mới.

Cần thay đổi điều gì để tận dụng được HTTP/2?

Trước khi thực hiện những thay đổi cần thiết để chuyển trang web của mình sang HTTP/2, bạn cần xác định xem khách truy cập trang web của bạn có đang sử dụng trình duyệt hỗ trợ giao thức này hay không.

Chuyển sang TLS

Đối với nhiều tài nguyên, điều khó khăn nhất khi chuyển sang HTTP/2 có thể không phải là giao thức mà là yêu cầu trang web phải hoạt động qua kết nối an toàn. Nếu bạn đang phát triển một trang web mới hoặc cập nhật một trang web cũ, bước đầu tiên là chuyển sang https.

Điều này quan trọng không chỉ đối với HTTP/2. Google sử dụng kết nối an toàn làm tín hiệu khi xếp hạng một trang web và các trình duyệt bắt đầu đánh dấu các trang web không phải https là “không an toàn”.

Chuyển đổi nhiều tập tin hình ảnh thành sprite

Với HTTP/1.1, việc truy xuất một hình ảnh lớn sẽ hiệu quả hơn nhiều đối với trình duyệt so với việc thực hiện nhiều yêu cầu đối với các tệp nhỏ. Để giải quyết vấn đề này, bạn có thể đưa các biểu tượng vào một tệp sprite.

Sprite kết quả được trả về trong một yêu cầu HTTP duy nhất, ngăn các yêu cầu xếp hàng đợi. Nhưng ngay cả khi khách truy cập vào một trang chỉ hiển thị một trong những biểu tượng này, họ vẫn phải tải xuống nhiều hơn nữa tập tin lớn hơnđể xem một hình ảnh cụ thể.

Nhờ vào ghép kênh trong Hàng đợi yêu cầu tài nguyên HTTP/2 không còn là vấn đề nữa. Cung cấp từng hình ảnh sẽ tốt hơn vì một số lý do: Bạn chỉ cần gửi những gì được yêu cầu.

Nhưng sprite có thể giảm kích thước của dữ liệu được tải xuống. Đặc biệt là khi tất cả những hình ảnh đó được sử dụng trên trang tải. Tuy nhiên, sử dụng sprite không còn là lựa chọn tốt nhất nữa.

Nhúng hình ảnh bằng URI dữ liệu

Một phương pháp khác để giải quyết vấn đề có nhiều yêu cầu trong HTTP/1.1 là nhúng hình ảnh vào CSS bằng URI dữ liệu. Nhúng hình ảnh theo cách này sẽ làm tăng đáng kể kích thước của tệp kiểu. Nếu bạn kết hợp phương pháp này với một kỹ thuật tối ưu hóa khác, liệu trình duyệt có tải hết CSS đó không? ngay cả khi người dùng không truy cập các trang sử dụng những hình ảnh này. Trong HTTP/2, "cách thực hành tốt nhất" này có nhiều khả năng gây tổn hại hơn là cải thiện hiệu suất.

Kết nối CSS và JavaScript

TRÊN Giai đoạn cuối cùng Nhiều bản dựng trang web kết hợp tất cả các tệp CSS và JavaScript nhỏ được sử dụng trên đó. Chúng tôi thường tách chúng ra trong quá trình phát triển để dễ quản lý hơn. Tuy nhiên, việc phân phối một tệp tới trình duyệt sẽ hiệu quả hơn so với việc phân phối năm tệp. Và chúng tôi lại đang cố gắng giảm số lượng yêu cầu HTTP.

Nếu bạn làm điều này, khách truy cập sẽ phải tải xuống mọi thứ Kiểu CSS và JavaScript của trang web. Bạn có thể giải quyết vấn đề này bằng cách chỉ kết nối một số tập tin nhất định cho từng khu vực của trang web trong quá trình lắp ráp của nó.

Yêu cầu HTTP " rẻ nhất" trên thế giới HTTP/2. Việc tổ chức từng trang các tài nguyên được sử dụng khi phát triển trang web sẽ là một ý tưởng tốt hơn nhiều. Bằng cách này, chỉ có thể tải vào trình duyệt mã cần thiết để hiển thị trang web hiện tại.

Chia sẻ tài nguyên giữa các máy chủ: Sharding

Khi sử dụng giao thức HTTP/1.1, bạn bị giới hạn số lượng kết nối đồng thời kết nối mở. Nếu việc tải xuống một số lượng lớn tài nguyên là điều không thể tránh khỏi thì một phương pháp để khắc phục hạn chế này là tìm nạp chúng từ các miền khác nhau. Phương pháp này được gọi là sharding tên miền. Với sự giúp đỡ của nó, bạn có thể giảm thời gian tải. Nhưng nó có thể tạo ra nhiều vấn đề, chưa kể đến chi phí chuẩn bị cơ sở hạ tầng cho khu vực.

HTTP/2 loại bỏ nhu cầu sử dụng phân chia tên miền: Bạn có thể yêu cầu bất kỳ số lượng tài nguyên nào. Nhưng điều này sẽ gây hại cho hiệu suất: bổ sung kết nối TCP và can thiệp vào mức độ ưu tiên của HTTP/2.

Cách chuẩn bị cho HTTP/2

Một số mẹo về cách chuẩn bị cho quá trình chuyển đổi sang HTTP/2.

Tạo các hình ảnh riêng biệt ngoài các họa tiết và hình ảnh nhúng

Tối ưu hóa các họa tiết và hình ảnh riêng lẻ, được sử dụng ở cấp độ trang nếu bạn cho rằng việc sử dụng các họa tiết sẽ cải thiện hiệu suất trang web. Điều này sẽ làm cho việc chuyển đổi từ các họa tiết lớn sang các họa tiết nhỏ dễ dàng hơn.

Sắp xếp các tập tin theo phần trang web

Khi di chuyển sang HTTP/2 bạn lấy hiệu suất tốt hơn với việc quản lý tài nguyên cẩn thận, khi chỉ những gì một trang cụ thể yêu cầu mới được gửi đến trang đó.

Quản lý sự tách biệt giữa các miền

Hiện tại, cách tốt nhất cho HTTP/1.1 là giới hạn việc phân tách thành hai tên máy chủ. Trong HTTP/2, có một cách để hợp nhất các kết nối này nếu chứng chỉ TLS hợp lệ cho cả máy chủ và các máy chủ trên cùng một địa chỉ IP. Yêu cầu chứng chỉ TLSđể hoạt động thông qua HTTP/2.


Hành động hơn nữa

Bài viết này không nói về cách tận dụng các công cụ HTTP/2 mới như đẩy máy chủ. Công nghệ này cho phép bạn quyết định tài nguyên nào được ưu tiên và buộc máy chủ chuyển chúng trước các tài nguyên ít quan trọng hơn.

Khi nào thực hiện chuyển đổi?

Quyết định chuyển sang HTTP/2 phụ thuộc vào: Giao thức này có được hầu hết trình duyệt của người dùng của bạn hỗ trợ không?. Hãy nhớ rằng HTTP/2 tương thích ngược nên bạn sẽ không phải làm gì đặc biệt.

Nếu phần lớn khách truy cập sử dụng trình duyệt hỗ trợ HTTP/2 thì đã đến lúc tối ưu hóa cho những người dùng này. Ví dụ: nhiều lợi ích của HTTP/2 sẽ được người dùng thiết bị di động cảm nhận sâu sắc nhất. Nếu trang web của bạn có tỷ lệ lưu lượng truy cập trên thiết bị di động lớn thì đây có thể là tín hiệu để chuyển sang HTTP/2.

Kế hoạch hành động HTTP/2 của bạn

  1. Khởi chạy trang web của bạn với kết nối an toàn hoặc chuyển sang TLS ngay bây giờ.
  2. Chuẩn bị cho HTTP/2 khi xây dựng trang web của bạn. Sử dụng các mẹo ở trên để tạo một trang web được tối ưu hóa cho cả hai phiên bản của giao thức.
  3. Kiểm tra lưu trữ của bạn. Đảm bảo máy chủ của bạn hỗ trợ HTTP/2.
  4. Triển khai tối ưu hóa HTTP/2. Hãy ngừng sử dụng các phương pháp đã lỗi thời và bắt đầu sử dụng những phương pháp mới.

Khi bạn chuyển sang HTTP/2, bạn nên kiểm tra xem tốc độ trang web của mình sẽ tăng lên bao nhiêu.