它發生了這樣的情況,我的實際數據是HTTP請求頭大小(以字節爲單位)的1/4。
有沒有辦法減少HTTP標頭的大小或任何其他相關的方式來處理這種情況?
我正在通過GPRS將數據從移動設備發送到服務器,並且不希望被大量請求數據包負擔,這些請求數據包將吃掉我的$$和帶寬。壓縮Http頭文件
回答
我從來沒有通過切斷標頭來優化網站性能。也就是說,大多數的問題,曾與做:
- 不需要 GET請求數量龐大。這通常是由於服務器沒有將適當的過期和緩存頭髮送回客戶端。有時候這是一個寫得不好的應用程序。
- 正在打開大量的TCP連接。如果能夠保持連接處於活動狀態並重新使用它以服務多個請求,性能會得到改善。我不確定移動客戶端是否支持存活。
- 壓縮的使用,或缺乏它。如果有什麼可以減少費用的話,那就是壓縮的用法。但是,我不確定移動客戶端能夠支持壓縮。順便說一句,通常會對響應進行壓縮,而不是對請求進行壓縮(我知道的所有瀏覽器都不會壓縮請求,儘管HTTP規範允許)。
如果在#3之後仍然需要更好的性能,那麼您的應用程序需要某種形式的性能設計評估。
那麼,什麼佔據了大量的標題?例如,Stack Overflow最近將大部分靜態內容移到了另一個域中,以便SO cookies不會包含在對靜態內容的請求中(不管怎樣都不會使用這些cookies)。
但是,如果大多數標題只是瀏覽器總是發送的東西(用戶代理等),那麼你可以做的事情並不多。
我在這裏問過一個關於HTTP請求頭大小的問題(http://stackoverflow.com/questions/1378476/http-get-request-packet-size-in-bytes/1378496#1378496) 。而這讓我感到震驚! 我的數據肯定會低很多,在那個帖子提到的數字 – 2009-09-05 17:27:31
@凱文,那裏沒有什麼令人震驚的。服務器需要該tcpdump抽取中的大部分請求標頭來決定如何準備響應。 – 2009-09-05 18:05:12
@Vineet,有什麼辦法呢?或者是頭頂行李不可避免。 – 2009-09-05 18:10:57
我認爲這些標題爲「架構」,即:「它們的確切內容因應用程序的不同而不同。
一旦有確切的當前列表,使用this post提供的鏈接,
你可以看到你需要哪些,避免發送等。
誰知道它是否會產生顯着差異,但至少您可以放心,您已在該主題上做出了最大努力。
嗯,這可能證明不受歡迎和/或實際上不回答你的問題,但你有沒有給你的數據粒度的任何想法?
一旦您儘可能減少了HTTP標頭,我懷疑您仍然希望再降低標頭/數據比率。這樣做的最明顯的方法是在每個http請求中發送/接收多個數據項。
在客戶端或服務器端添加一層邏輯(或對數據模型的更改)可以允許您以更大的塊請求數據,這是基於測量您請求時可能需要的其他數據一個單一的項目。
整個問題的關鍵是在每個請求中傳輸更多的數據以減少請求的數量。帶寬(和客戶端存儲)的浪費 - 來自傳輸你實際上不需要的數據 - 最終可能比HTTP頭部佔用更容易接受。
上找到更多詳細信息。我沒有考慮將數據粒度引起我的注意。但確實是一個好點! – 2009-09-07 12:05:17
- 1. 如何壓縮HTTP響應頭文件?
- 2. 壓縮HTTP響應頭?
- 3. 缺少HTTP壓縮文件
- 4. 如何啓用HTTP壓縮來壓縮JSON文件
- 5. 通過Net :: HTTP下載壓縮文件
- 6. 從服務器解壓縮文件http
- 7. HTTP GET檢索壓縮文件
- 8. 恢復文件和HTTP壓縮
- 9. 壓縮標頭
- 10. HTTP壓縮 - 如何發送EAR文件中存在的預壓縮文件?
- 11. 壓縮文件
- 12. Libevent HTTP Server&壓縮?
- 13. 壓縮文件未解壓
- 14. Node.js - 壓縮/解壓縮文件夾
- 15. Magick ++壓縮和解壓縮文件
- 16. 壓縮未壓縮的MSI文件
- 17. 與django_compressor壓縮文件以gzip壓縮
- 18. 在yii中壓縮/解壓縮文件
- 19. 壓縮和解壓縮文件夾
- 20. 如何壓縮文件時不壓縮
- 21. 壓縮解壓縮的exe文件
- 22. png文件的壓縮和解壓縮
- 23. IIS 7.5壓縮會創建壓縮文件,但會返回非壓縮文件
- 24. .NET使用壓縮和非壓縮數據壓縮文件
- 25. 壓縮.htaccess文件
- 26. 壓縮AVI文件
- 27. 壓縮MDB文件
- 28. 解壓縮文件
- 29. 壓縮KML文件
- 30. 壓縮Javascript文件
+1爲好問題,在你描述的設置中 – KLE 2009-09-05 21:18:15
你可以擴展「我從移動設備發送數據」嗎?這聽起來像你正在使用一些自定義的應用程序(也因爲* java *和* j2me *標籤)?如果是這樣的話,如果你確定你的服務器端應用程序不需要它們,你可能可以擺脫Accept- *和甚至Host等請求頭。您可以使用User-Agent發送一些版本信息,以防您的服務器在將來的版本中需要更多的細節。響應標題也可能受到限制。所以:**是你的控制下的客戶端和服務器?** HTTP規範對你來說有多重要? – Arjan 2009-09-05 21:39:53
@KLE,「在你描述的設置中」 對不起,我不明白這個說法? – 2009-09-05 22:05:01