2009-09-05 69 views
7

它發生了這樣的情況,我的實際數據是HTTP請求頭大小(以字節爲單位)的1/4。
有沒有辦法減少HTTP標頭的大小或任何其他相關的方式來處理這種情況?
我正在通過GPRS將數據從移動設備發送到服務器,並且不希望被大量請求數據包負擔,這些請求數據包將吃掉我的$$和帶寬。壓縮Http頭文件

+0

+1爲好問題,在你描述的設置中 – KLE 2009-09-05 21:18:15

+1

你可以擴展「我從移動設備發送數據」嗎?這聽起來像你正在使用一些自定義的應用程序(也因爲* java *和* j2me *標籤)?如果是這樣的話,如果你確定你的服務器端應用程序不需要它們,你可能可以擺脫Accept- *和甚至Host等請求頭。您可以使用User-Agent發送一些版本信息,以防您的服務器在將來的版本中需要更多的細節。響應標題也可能受到限制。所以:**是你的控制下的客戶端和服務器?** HTTP規範對你來說有多重要? – Arjan 2009-09-05 21:39:53

+0

@KLE,「在你描述的設置中」 對不起,我不明白這個說法? – 2009-09-05 22:05:01

回答

3

我從來沒有通過切斷標頭來優化網站性能。也就是說,大多數的問題,曾與做:

  1. 不需要 GET請求數量龐大。這通常是由於服務器沒有將適當的過期和緩存頭髮送回客戶端。有時候這是一個寫得不好的應用程序。
  2. 正在打開大量的TCP連接。如果能夠保持連接處於活動狀態並重新使用它以服務多個請求,性能會得到改善。我不確定移動客戶端是否支持存活。
  3. 壓縮的使用,或缺乏它。如果有什麼可以減少費用的話,那就是壓縮的用法。但是,我不確定移動客戶端能夠支持壓縮。順便說一句,通常會對響應進行壓縮,而不是對請求進行壓縮(我知道的所有瀏覽器都不會壓縮請求,儘管HTTP規範允許)。

如果在#3之後仍然需要更好的性能,那麼您的應用程序需要某種形式的性能設計評估。

5

那麼,什麼佔據了大量的標題?例如,Stack Overflow最近將大部分靜態內容移到了另一個域中,以便SO cookies不會包含在對靜態內容的請求中(不管怎樣都不會使用這些cookies)。

但是,如果大多數標題只是瀏覽器總是發送的東西(用戶代理等),那麼你可以做的事情並不多。

+0

我在這裏問過一個關於HTTP請求頭大小的問題(http://stackoverflow.com/questions/1378476/http-get-request-packet-size-in-bytes/1378496#1378496) 。而這讓我感到震驚! 我的數據肯定會低很多,在那個帖子提到的數字 – 2009-09-05 17:27:31

+1

@凱文,那裏沒有什麼令人震驚的。服務器需要該tcpdump抽取中的大部分請求標頭來決定如何準備響應。 – 2009-09-05 18:05:12

+0

@Vineet,有什麼辦法呢?或者是頭頂行李不可避免。 – 2009-09-05 18:10:57

2

我認爲這些標題爲「架構」,即:「它們的確切內容因應用程序的不同而不同。

一旦有確切的當前列表,使用this post提供的鏈接,
你可以看到你需要哪些,避免發送等。

誰知道它是否會產生顯着差異,但至少您可以放心,您已在該主題上做出了最大努力。

2

嗯,這可能證明不受歡迎和/或實際上不回答你的問題,但你有沒有給你的數據粒度的任何想法?

一旦您儘可能減少了HTTP標頭,我懷疑您仍然希望再降低標頭/數據比率。這樣做的最明顯的方法是在每個http請求中發送/接收多個數據項。

在客戶端或服務器端添加一層邏輯(或對數據模型的更改)可以允許您以更大的塊請求數據,這是基於測量您請求時可能需要的其他數據一個單一的項目。

整個問題的關鍵是在每個請求中傳輸更多的數據以減少請求的數量。帶寬(和客戶端存儲)的浪費 - 來自傳輸你實際上不需要的數據 - 最終可能比HTTP頭部佔用更容易接受。

+1

上找到更多詳細信息。我沒有考慮將數據粒度引起我的注意。但確實是一個好點! – 2009-09-07 12:05:17