2015-09-15 13 views
14

Điều này có thể chỉ làm nổi bật một số quan niệm sai lầm của tôi, nhưng tôi tò mò:Việc triển khai XHR hiện tại có tận dụng lợi thế của HTTP/2 không?

Nếu bạn có máy chủ HTTP/2 đang chạy và muốn thực hiện yêu cầu XHR trong trình duyệt tới máy chủ, XHR sẽ tự động tận dụng hiệu suất tối ưu hóa trong tiêu đề và như vậy mà nó cung cấp?

Hoặc nó sẽ bỏ qua chức năng đó và hoạt động như một yêu cầu HTTP? Nếu có, có điều gì chúng ta có thể làm để sử dụng các tối ưu hóa mới trong các yêu cầu của chúng tôi không?

+1

ajax hoạt động trên giao diện http1.1, ít nhất là bây giờ. một số tối ưu hóa perf sẽ được minh bạch (nén header), một số sẽ không áp dụng (nhiều tài nguyên). – dandavis

+0

@dandavis Không chắc chắn nếu tôi nhận được bạn một cách chính xác. Bạn đang nói về trình duyệt nào? – dsign

+1

@dsign: tất cả chúng; xmlHttpRequest cấp 2 xuất hiện trước http2, do đó, có (afaik) không có phương thức hoặc khả năng mới nào cho giao diện ajax (dựa trên http1.1), ngay cả khi các lớp nền tảng sử dụng http2. đến điểm của câu hỏi: trình duyệt tận dụng lợi thế của http2, nhưng mã JS không cho phép người lập trình có thêm bất kỳ lợi thế nào trên http1 ... – dandavis

Trả lời

15

Bạn không cần phải làm gì cả. Nếu máy chủ hỗ trợ HTTP/2, XHR sẽ sử dụng nó. Tiêu đề nén và như vậy sẽ tự động khởi động.

thử nghiệm nó:

  • mở một/2 trang web HTTP trong Chrome. Bạn có thể sử dụng chúng tôi, to also checkout some cool stuff regarding HTTP/2 PUSH, AngularJS and RequireJS.
  • Mở bảng điều khiển Devtools (F12), sau đó chọn bảng điều khiển mạng, sau đó nhấp vào XHR. Nhấp chuột phải vào hàng tiêu đề và đảm bảo bạn đã bật cột "Giao thức".
  • Bạn sẽ thấy "h2" trong cột được đề cập (trong trường hợp của chúng tôi, AngularJS đang tải mẫu bao gồm thông qua XHR).
  • Khi bạn ở đó, hãy lưu ý rằng máy chủ đã đẩy yêu cầu XHR. Dấu hiệu trả lời của câu trả lời được đẩy là "tiêu đề tạm thời" thay vì tiêu đề yêu cầu và thời gian "tải xuống" và "chờ đợi" bất thường nhỏ. Chúng tôi thậm chí còn thêm một tiêu đề phụ vào phản hồi (x-shimmmercat-note: push-stream). Trình duyệt đã chấp nhận yêu cầu này, do đó, Yêu cầu XHR không chỉ sẽ sử dụng HTTP/2 nếu có, nhưng có thể trong một số trường hợp sử dụng tài nguyên được đẩy.
+0

gọn gàng, nhưng nguồn lực được đẩy ra từ yêu cầu ajax ở đâu? – dandavis

+0

có điều gì ngoài việc lưu trước bộ nhớ đệm không? hoặc tôi đoán những gì tôi hỏi về là nếu nó thay đổi quan điểm từ ajax (phản ứng, tình trạng, tiêu đề, vv), hoặc nếu tất cả những thứ đó hoạt động giống như nó được sử dụng để. từ những gì tôi có thể nói, tương tác api ajax cũng giống như trước đây, đó là sự hiểu biết của bạn? – dandavis

+0

@dandavis Vâng, tôi nghĩ bạn đã làm đúng. Yêu cầu Ajax thậm chí sẽ khó có thể nhận ra rằng tài nguyên đã được đẩy. Nhưng hãy để tôi nói cho bạn biết, việc đẩy HTTP/2 là quá mới (không thực sự, nhưng chỉ từ từ bắt đầu cất cánh) thậm chí loại bỏ XHR khỏi phương trình. – dsign

Các vấn đề liên quan