2012-11-26 10 views
17

Tôi đang cố gắng gửi dữ liệu ở chế độ chunked. Tất cả tiêu đề được đặt đúng và dữ liệu được mã hóa tương ứng. Trình duyệt nhận ra câu trả lời của tôi là một câu trả lời, chấp nhận tiêu đề và bắt đầu nhận dữ liệu.Mã hóa chuyển chunked - hành vi trình duyệt

Tôi đã mong trình duyệt sẽ cập nhật trang trên mỗi đoạn nhận được, thay vào đó nó đợi cho đến khi tất cả các đoạn được nhận rồi hiển thị tất cả các khối. Đây có phải là hành vi dự kiến?

Tôi đã mong đợi để xem từng đoạn được hiển thị ngay sau khi nhận được. Khi sử dụng curl, mỗi đoạn được hiển thị ngay sau khi nhận được. Tại sao điều tương tự cũng không xảy ra với các trình duyệt GUI? Họ đang sử dụng một số loại đệm/bộ nhớ cache?

Tôi đặt tiêu đề Cache-Control thành no-cache, vì vậy không chắc chắn đó là về bộ nhớ cache.

+0

Bạn đang tìm kiếm trình duyệt nào? Nói chung, trình duyệt _will_ thực hiện hiển thị gia tăng, nhưng chúng có thể đệm nội bộ lên một chút vì quá trình chuyển tiếp tốn kém ... –

+0

Loại dữ liệu nào bạn đang gửi trong các khối? Nó chỉ là HTML hoặc bạn đang gửi dữ liệu tập lệnh? – qqx

+0

Tôi đang gửi 'text/html'. Đã thử trên Firefox và Chrome. Cả hai chờ đợi tất cả các khối được nhận. –

Trả lời

13

trình duyệt afaik cần một số tải trọng để bắt đầu hiển thị khối khi chúng nhận được.
Curl dĩ nhiên là một ngoại lệ.

Cố gắng gửi khoảng 1KB dữ liệu tùy ý trước đoạn đầu tiên của bạn.

Nếu bạn đang làm mọi thứ chính xác, trình duyệt sẽ hiển thị các khối khi chúng nhận được.

+0

Yay !!! Điều đó là vậy đó! hoạt động hoàn hảo trong Firefox, Chrome, Safari, thậm chí cả Opera! Cảm ơn bạn rất nhiều. –

+0

Cảm ơn người đàn ông, bạn đã cứu ngày của tôi! – Jekis

+0

1KiB thực sự là một giá trị chung tốt, để biết thêm chi tiết xem tại đây: http://stackoverflow.com/q/16909227/1534459 – bodo

0

Trình duyệt có thể xử lý và hiển thị dữ liệu khi dữ liệu được gửi đến chunked hay không. Cho dù trình duyệt hiển thị dữ liệu phản hồi sẽ là một chức năng của cấu trúc dữ liệu và loại đệm nào sử dụng. ví dụ. Trước khi trình duyệt có thể hiển thị hình ảnh, nó cần phải có tài liệu (hoặc đủ tài liệu), bảng định kiểu, v.v.

Chunking chủ yếu hữu ích khi độ dài của tài nguyên không xác định tại thời điểm phản hồi tài nguyên được tạo (không thể bao gồm "Độ dài nội dung" trong tiêu đề phản hồi) và máy chủ không muốn đóng kết nối sau khi tài nguyên được chuyển.