HTTP/2: Điều mọi lập trình viên web cần phải thay đổi trong năm 2020

6978
tech talk http 2 web developer

Tính tới tháng 3 năm 2020, HTTP/2 đã được sử dụng tới tận 43,8% trên toàn các website. Và con số này sẽ còn tiếp tục tăng nữa. Đây là 1 bài tóm tắt ngắn gọn về khám phá chủ đề này của mình gần đây.

Cái nhìn tổng quát ngắn gọn về HTTP/2

  • HTTP/2 là một dạng Protocol mới và đang dần thay thế HTTP/1.1 vốn hiện đang là tiêu chuẩn thực tế của các web.
  • Động lực chính đằng sau nó chính là hiệu năng đáng kinh ngạc của nó.
  • Tính tương thích ngược của nó. Khách hàng và trình duyệt vẫn có thể sử dụng HTTP/1.1 như bình thường nếu họ không hỗ trợ HTTP/2.
  • Với HTTP/2, SSL cũng được khuyến khích vì các lý do hiệu suất, nhưng không bắt buộc.

Những cải tiến nào mà HTTP/2 mang lại?

  • Multiplexing:
    tech talk http 2 dev webHttp/2 có thể fetch đa tập tin (thông thường là các tệp HTML, JS CSS, v…v…) 1 cách đồng bộ từ server. Nó sử dụng cùng loại kết nối TCP cho đa tập tin, do đó được xem là multiplexing. Chỉ có 1 kết nối TCP là cần thiết. Để so sánh, Http/1.1 cho phép tối đa 4-8 kết nối tới server (cho mỗi domain) cùng 1 lúc, hạn chế số lượng tệp bạn có thể fetch. Dù là 1 yêu cầu cũng cần phải đợi để yêu cầu trước đó kết thúc.
  • Dùng Binary encoding cho yêu cầu/ phản hồi khi so sánh với http/1.1 vốn dùng ‘text encoding’. Điều đó có nghĩa là nó sẽ xử lý chính xác hơn về Line ending, whitespace encoding v…v… Binary encoding còn rất hiệu quả để phân tích và sử dụng.
  • Stream prioritization – ưu tiên luồng: Mỗi luồng yêu cầu đều có thể được ưu tiên.
  • Stream dependencies – luồng phụ thuộc: Phụ thuộc giữa các luồng cũng có thể được chỉ định. Nên chúng ta có thể nói rằng 1 tệp js có thể phụ thuộc vào 1 tệp khác.
  • HTTP header compression – nén tiêu đề HTTP: http/2 hỗ trợ nén tiêu đề. Điều đó có nghĩa là sẽ có ít dữ liệu trên dây hơn.
  • Server Initiated Push – máy chủ khởi động đẩy: không giống như như http/1.1, server http/2 có thể tự bắt đầu đẩy các tệp đến máy khách ngay cả trước khi khách yêu cầu. Điều này làm giảm độ trễ và chờ việc phân tích html cũng như yêu cầu asset.

Làm thế nào chuẩn bị cho HTTP/2?

  • Ngưng bundling các asset:
    Không cẩn phải bundle các tệp css/JS vì http/2 hỗ trợ multiplexing. Hầu như không có giới hạn nào trong việc đưa ra nhiều yêu cầu web. Nó cũng có thể có nghĩa là chúng ta không cần phải deploy toàn bộ bundle khi chỉ có vài tệp cần được update.
  • Ngưng inlining JS/CSS/Hình ảnh/ SVG:
    Fetch chúng như là các tệp riêng biệt. Bạn có thể tận dụng bộ nhớ đệm trình duyệt với các tệp riêng biệt.
  • Dùng ‘lazy loading’ cho các tệp JS/css. Điều này sẽ hiệu quả hơn và giảm thời gian tải ban đầu.
  • Ngưng tạo hình ảnh ‘Sprites’:
    Điều này bây giờ không còn cần thiết nữa nhờ vào multiplexing. Điều này cũng có nghĩa tiến độ công việc và dựng script sẽ đơn giản hơn.
  • Ngưng sharding domain:
    Không cần phải rải các tệp của bạn trên nhiều tên miền, vì ta có thể tìm nạp mọi thứ ngay bây giờ từ cùng một tên miền.
  • Bắt đầu sử dụng HTTPS:
    Nó là tiêu chuẩn được đề xuất với HTTP/2. Bạn sẽ có được trang web / ứng dụng an toàn hơn theo mặc định.

Nhưng luôn luôn:

  • Hãy đảm bảo những người dùng của bạn đang sử dụng những trình duyệt mới nhất (HTTP/2 bây giờ được hỗ trợ trên gần hết tất cả các trình duyệt, ngoại trừ đối tượng đáng ngờ như mọi khi của chúng ta: IE < v10)
  • HTTP/2 được cho phép trên server của bạn. Hẹn gặp lại các bạn trên giao thức HTTP2!

Tech Talk via dev.to

CHIA SẺ