2009-09-05 43 views
7

Dữ liệu thực tế của nó xảy ra bằng 1/4 kích thước tiêu đề yêu cầu HTTP tính theo byte.
Có cách nào để giảm kích thước trên tiêu đề HTTP hoặc bất kỳ cách nào khác có liên quan để đối phó với tình huống này không?
Tôi đang gửi dữ liệu từ thiết bị di động qua GPRS tới máy chủ và không muốn bị gánh nặng với các gói yêu cầu lớn sẽ ăn vào $$ và băng thông của tôi.Nén tiêu đề Http

+0

+1 cho câu hỏi hay, trong cài đặt bạn mô tả – KLE

+1

Bạn có thể mở rộng "Tôi đang gửi dữ liệu từ thiết bị di động" không? Có vẻ như bạn đang sử dụng một số ứng dụng được tạo tùy chỉnh (cũng vì các thẻ * java * và * j2me *)? Nếu có, bạn có thể loại bỏ các tiêu đề yêu cầu như Accept- * và thậm chí cả Host, nếu bạn biết chắc chắn rằng các ứng dụng phía máy chủ của bạn sẽ không cần chúng. Bạn có thể sử dụng Tác nhân người dùng để gửi một số thông tin phiên bản chỉ trong trường hợp máy chủ của bạn cần thêm chi tiết trong các phiên bản sau. Các tiêu đề phản hồi cũng có thể bị hạn chế. Vì vậy: ** đều là máy khách và máy chủ dưới sự kiểm soát của bạn? ** Và các thông số HTTP quan trọng đối với bạn như thế nào? – Arjan

+0

@KLE, "trong cài đặt bạn mô tả" Tôi xin lỗi tôi không hiểu tuyên bố này? –

Trả lời

3

Tôi chưa bao giờ phải tối ưu hóa hiệu suất trang web bằng cách cắt bớt tiêu đề. Điều đó nói rằng, hầu hết các vấn đề phải làm với:

  1. Số lượng lớn không mong muốn Yêu cầu GET. Điều này thường do máy chủ không gửi các tiêu đề hết hạn và bộ nhớ đệm thích hợp trở lại máy khách. Đôi khi nó là một ứng dụng viết kém.
  2. Số lượng lớn các kết nối TCP đang được mở. Hiệu suất cải thiện khi bạn có thể giữ kết nối còn sống và sử dụng lại nó để phục vụ nhiều yêu cầu. Tôi không chắc chắn về việc liệu hỗ trợ khách hàng di động có tiếp tục hoạt động hay không.
  3. Cách sử dụng tính năng nén hoặc thiếu. Nếu có bất cứ điều gì có thể cắt giảm chi phí, đó là việc sử dụng nén. Tuy nhiên, tôi không chắc chắn về các ứng dụng di động có thể hỗ trợ nén. Nhân tiện, người ta thường nén cho các phản hồi, chứ không phải cho các yêu cầu (tất cả các trình duyệt mà tôi biết, không bao giờ nén yêu cầu mặc dù thông số HTTP cho phép nó).

Nếu bạn vẫn cần hiệu suất tốt hơn sau # 3, ứng dụng của bạn cần một số hình thức đánh giá thiết kế hiệu suất.

5

Vâng, điều gì đang chiếm phần lớn tiêu đề của bạn? Ví dụ, Stack Overflow gần đây đã di chuyển hầu hết nội dung tĩnh sang một miền khác sao cho các cookie SO sẽ không được bao gồm trong các yêu cầu cho nội dung tĩnh (mà sẽ không sử dụng cookie anyway).

Nếu, tuy nhiên, hầu hết các tiêu đề chỉ là những thứ mà trình duyệt sẽ luôn gửi (tác nhân người dùng v.v.) thì không có nhiều việc bạn có thể làm.

+0

Tôi đã đặt câu hỏi tại đây (http://stackoverflow.com/questions/1378476/http-get-request-packet-size-in-bytes/1378496#1378496) về kích thước tiêu đề yêu cầu HTTP. Và điều đó làm tôi sốc! Dữ liệu của tôi chắc chắn sẽ thấp hơn nhiều so với số liệu được đề cập tại bài đăng đó –

+1

@Kevin, không có gì gây sốc ở đó. Hầu hết các tiêu đề yêu cầu trong trích xuất tcpdump đó được yêu cầu bởi máy chủ, để quyết định cách chuẩn bị phản hồi. –

+0

@Vineet, Có cách nào trong số này không? hoặc là hành lý tiêu đề không thể tránh khỏi. –

2

Tôi xem tiêu đề là "Kiến trúc", nghĩa là: "nội dung chính xác của chúng khác nhau tùy theo ứng dụng theo yêu cầu".

Khi bạn có danh sách chính xác hiện tại, sử dụng các liên kết được cung cấp trong this post,
bạn có thể xem bạn cần loại nào và tránh gửi cho người khác.

Ai biết được điều đó có tạo nên sự khác biệt đáng kể hay không, nhưng ít nhất bạn có thể yên tâm rằng bạn đã cố gắng hết mình về chủ đề đó.

2

Vâng, điều này có thể chứng minh là không phổ biến và/hoặc không thực sự trả lời câu hỏi của bạn nhưng bạn có đưa ra bất kỳ suy nghĩ nào về mức độ chi tiết của dữ liệu không?

Khi bạn đã giảm tiêu đề HTTP của mình nhiều nhất có thể, tôi nghi ngờ bạn vẫn muốn giảm tỷ lệ tiêu đề/dữ liệu một số chi tiết khác. Cách rõ ràng để làm điều đó là gửi/nhận nhiều hơn một mục dữ liệu trong mỗi yêu cầu http.

Một lớp logic bổ sung ở phía máy khách hoặc phía máy chủ (hoặc thay đổi đối với mô hình dữ liệu của bạn) sẽ cho phép bạn yêu cầu dữ liệu theo khối lớn hơn, dựa trên việc đo lường dữ liệu nào khác bạn có thể cần khi bạn yêu cầu một mục duy nhất.

Toàn bộ điểm sẽ là chuyển nhiều dữ liệu hơn trong mỗi yêu cầu để giảm số lượng yêu cầu. Các chất thải của băng thông (và lưu trữ khách hàng) - đến từ việc chuyển dữ liệu bạn sẽ không thực sự cần - có thể sẽ được chấp nhận nhiều hơn so với dấu chân đầu trang HTTP.

+1

Tôi đã không cân nhắc mức độ chi tiết của dữ liệu để thu hút sự chú ý của mình. Nhưng thực sự là một điểm tốt! –

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