Chúng tôi lưu trữ một số tệp video (mp4) trên trang web của chúng tôi.
Tất cả các tệp được tải quá chậm trong Google Chrome, trong FF mọi thứ đều ổn.
Tôi đã thử tải xuống tệp có kích thước 34MB (Tôi đã mở tệp bằng liên kết trực tiếp). Kết quả là:
- Chrome đã thực hiện ~ 22000 (!) Yêu cầu, 982 MB được chuyển.
- Firefox chỉ thực hiện 5 yêu cầu.
Là một máy chủ, chúng tôi sử dụng nginx với các cài đặt mặc định (liên quan đến tệp video đang phục vụ).
Tại đây, sự tương tác (năm yêu cầu đầu tiên) sẽ tạo ra Chrome và máy chủ. Chỉ Range
, Content-Length
, Content-Range
tiêu đề bao gồm.
(<- tiêu đề được gửi bởi Chrome, <- một tiêu đề được gửi bởi máy chủ):
> Initial request for file, usual GET
< Content-Length:35690389
< Content-Type:video/mp4
Then a bunch of similar requests, on which the server responded with 206 status code:
---
> Range:bytes=0-
< Content-Length:35690389
< Content-Range:bytes 0-35690388/35690389
---
> Range:bytes=29100305-
< Content-Length:6590084
< Content-Range:bytes 29100305-35690388/35690389
---
> Range:bytes=35566374-
< Content-Length:124015
< Content-Range:bytes 35566374-35690388/35690389
---
> Range:bytes=32-
< Content-Length:35690357
< Content-Range:bytes 32-35690388/35690389
Có vẻ như Chrome hiểu nhầm một số tiêu đề được gửi từ máy chủ (ví dụ Phạm vi) và tải xuống cùng một phần tệp nhiều lần.
Điều gì có thể gây ra vấn đề? Có ý kiến gì không?