Tôi đã tối ưu hóa thời gian tải trang của một trang web. Một trong những cách là bằng cách kết hợp nhiều yêu cầu HTTP cho CSS thành một yêu cầu HTTP kết hợp. Nhưng một trong những người đánh giá đã hỏi một câu hỏi thú vị: việc không tải xuống nhiều tệp CSS có làm giảm thời gian tải trang không?
Tôi chưa bao giờ xem xét tùy chọn này, vì điều duy nhất tôi đọc được trên internet là việc giảm số lượng (chặn) yêu cầu HTTP là chìa khóa cho một trang web nhanh hơn (mặc dù Google Pagespeed Insights dường như không nêu rõ điều này 1 ).
Tôi thấy một vài lý do tại sao việc tương tự hóa sẽ không cải thiện hiệu suất hoặc chỉ là vấn đề rất ít (vượt trội hơn so với lợi ích của việc sử dụng ít yêu cầu HTTP hơn):
- Thiết lập một kết nối mới là tốn kém. Mặc dù việc thiết lập nhiều kết nối có thể được thực hiện song song, các trình duyệt sẽ sử dụng tối đa khoảng 4 - 6 kết nối (tùy thuộc vào trình duyệt), do đó, tải xuống CSS song song sẽ chặn tải xuống các tài sản khác như JavaScript và hình ảnh.
- Thiết lập kết nối HTTPS cần thêm một số dữ liệu. Tôi đã đọc điều này có thể dễ dàng là một vài KB dữ liệu. Đây là một số dữ liệu bổ sung phải được gửi qua mạng, thay vì CSS mà chúng tôi thực sự muốn gửi.
- Do thuật toán TCP Slow Start, càng nhiều dữ liệu được gửi qua kết nối, kết nối sẽ càng nhanh. Vì vậy, các kết nối tồn tại lâu hơn sẽ thực sự gửi dữ liệu nhanh hơn nhiều so với các kết nối mới. Xem ví dụ giao thức SPDY, sử dụng một kết nối duy nhất để cải thiện thời gian tải trang.
- TCP là một sự trừu tượng: vẫn còn (thông thường) chỉ có một kết nối cơ bản. Vì vậy, trong khi nhiều yêu cầu được sử dụng, dữ liệu gửi qua dây có thể không nhất thiết được hưởng lợi từ nhiều kết nối để cải thiện tốc độ.
- Kết nối Internet vốn không đáng tin cậy, đặc biệt là trên thiết bị di động. Một yêu cầu có thể được hoàn thành nhanh hơn đáng kể so với yêu cầu khác. Sử dụng nhiều yêu cầu cho CSS có nghĩa là hiển thị trang web bị chặn cho đến khi yêu cầu cuối cùng kết thúc, có thể muộn hơn đáng kể so với kết nối trung bình.
Vì vậy, có bất kỳ lợi ích nào trong việc song song hóa các yêu cầu HTTP cho các tệp CSS không?
Lưu ý / cập nhật: tất cả các tệp CSS đều bị chặn kết xuất. Các tệp CSS chưa được di chuyển ra ngoài đường dẫn quan trọng.