2016-05-31 21 views
22

Tôi đang bắt đầu một dự án mới và tôi đang cố gắng chuyển tiếp suy nghĩ về nó. Tôi đã sử dụng Browserify trong quá khứ. Đối với dự án mới của tôi, tôi muốn sử dụng Webpack, Rollup hoặc SystemJS. Webpack trông rất xa vời với nhiều tính năng tuyệt vời.Giá trị của việc sử dụng Webpack với HTTP/2

Tôi lo ngại rằng Webpack sẽ không liên quan trong một hoặc hai năm với việc chấp nhận HTTP/2. Vì vậy, tôi tự hỏi, Webpack cung cấp giá trị nào cho một trang web được phân phát qua HTTP/2? Tôi không tìm kiếm một ý kiến, nhưng một lời giải thích thực tế về những lợi ích của việc sử dụng Webpack với HTTP/2. Nếu không có lợi ích, hoặc rất ít lợi ích, điều đó cũng sẽ giúp tôi với quyết định của tôi.

+4

Tôi thấy nó có phần hài hước, miễn là chúng tôi đáp ứng các yêu cầu của chúng tôi cho ý kiến ​​với "Tôi muốn sự thật" (bề ngoài sự thật về ý kiến). Cuộc tuần tra "offtopic" lá nó được. Tốt về bạn @ battmanz, bạn sly chó! –

+0

@ZephyrPellerin Xin chào, tôi phải trả lời câu hỏi của mình bất kỳ cách nào tôi có thể! :) – battmanz

Trả lời

15

TL; DR

Trong HTTP/1.1, bạn phải làm càng ít yêu cầu càng tốt để có được hiệu suất; trong HTTP/2, bạn có tác động hiệu suất tối thiểu theo yêu cầu nhưng vẫn có thể gặp khó khăn về tài nguyên và quản lý phụ thuộc sẽ yêu cầu một công cụ đóng gói chẳng hạn như webpack.

dài phiên bản:

Webpack (hoặc bất kỳ bundler khác) vẫn có thể cung cấp giá trị trong một thế giới HTTP/2 vì trong khi HTTP/2 cho phép ghép, không đồng bộ, truy vấn đồng thời từ máy khách đến máy chủ, nó không có nghĩa là máy chủ thực mà bạn đang kết nối có khả năng xử lý không giới hạn hoặc thậm chí sẽ cho phép chúng. Trong khung SETTINGS được gửi khi bạn kết nối, hầu hết các máy chủ sẽ hạn chế số lượng các luồng đồng thời với một giá trị hợp lý như 100. Điều này có nghĩa là bạn không thể phát hành hơn 100 yêu cầu đồng thời, đây là vấn đề nếu bạn có ví dụ một ứng dụng React lớn chưa được tích hợp với hàng trăm tệp js. Hơn nữa, trong nhiều trường hợp, bạn có phụ thuộc transitive giữa các tập tin javascript và nếu bạn không bó tất cả các phụ thuộc, bạn sẽ cần nhiều yêu cầu khứ hồi vì trình duyệt sẽ chỉ khám phá các phụ thuộc khi nó nhận được câu trả lời trước đó , phủ nhận lợi ích HTTP/2. (Hoặc máy chủ có thể tự động đẩy các phụ thuộc nhưng điều này tạo ra một tập hợp các vấn đề khác).

Vì lý do này, nên sử dụng webpack để đóng gói một số gói đồng nhất để đảm bảo yêu cầu đồng thời tối đa của bạn thấp hơn giới hạn của máy chủ trong khi vẫn giữ cho gói của bạn đủ nhỏ để tận dụng bộ nhớ đệm của trình duyệt hiệu quả.

+4

Chưa kể đến Webpack 2 của AgressiveSplittingPlugin: xem https://medium.com/webpack/webpack-http-2-7083ec3f3ce6#.zdo4juvgo –

+3

Và cách sử dụng cho AgressiveSplittingPlugin https://github.com/webpack/webpack/tree/ chủ/ví dụ/phân tách tích cực http2 –

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