我正在研究ajax長輪詢類型的應用程序,並且我想盡量減少我使用的帶寬量。現在最大的成本之一就是客戶端HTTP頭。一旦建立了連接並在客戶端存儲了會話ID,我並不想浪費傳輸冗餘HTTP信息的更多帶寬(例如瀏覽器類型,接受編碼等)。在很多連接的過程中,這很快就增加了大量的數據!從XMLHttpRequest中刪除HTTP標頭
我真的很想拿走我的XMLHttpRequest並且覈對所有的頭文件,這樣只有絕對最小值被傳送到服務器。是否有可能做到這一點?
我正在研究ajax長輪詢類型的應用程序,並且我想盡量減少我使用的帶寬量。現在最大的成本之一就是客戶端HTTP頭。一旦建立了連接並在客戶端存儲了會話ID,我並不想浪費傳輸冗餘HTTP信息的更多帶寬(例如瀏覽器類型,接受編碼等)。在很多連接的過程中,這很快就增加了大量的數據!從XMLHttpRequest中刪除HTTP標頭
我真的很想拿走我的XMLHttpRequest並且覈對所有的頭文件,這樣只有絕對最小值被傳送到服務器。是否有可能做到這一點?
你有超過請求頭的控制非常少,但你仍然可以做一些事情 -
您可以覆蓋發送請求之前使用setRequestHeader()
標準頭一些,但它是可能的瀏覽器可能不容許的一些更重要的,似乎是沒有辦法獲得標題列表(除了要求服務器將它們回顯給你)知道哪個嘗試覆蓋。
我認爲有可能至少在某些瀏覽器中刪除所有頭文件。 看看gmail/calendar應用程序和谷歌Chrome後臺之間的通信(在Firefox中它不一樣) 它可能是谷歌有一些隱藏的XMLHttpRequest對象的API, 你會看到類似下面的輸出(請注意,沒有請求標題部分):
Request URL:https://mail.google.com/mail/u/0/channel/bind?XXXXXXXXXXXXXX
Request Method:POST
Status Code:200 OK
Query String Parameters
OSID:XXXXXXXXXXXXX
OAID:XXXXXXXXX
VER:8
at:XXXXXXXXXXXXXX
it:30
SID:XXXXXXXXXXXX
RID:XXXXXXXXX
AID:XXXXXXXXXX
zx:XXXXXXXXXXXX
t:1
Request Payload
count=1&ofs=211&req0_type=cf&req0_focused=1&req0__sc=c
Response Headers
cache-control:no-cache, no-store, max-age=0, must-revalidate
content-encoding:gzip
content-type:text/plain; charset=utf-8
date:Tue, 09 Oct 2012 08:52:46 GMT
expires:Fri, 01 Jan 1990 00:00:00 GMT
pragma:no-cache
server:GSE
status:200 OK
version:HTTP/1.1
x-content-type-options:nosniff
x-xss-protection:1; mode=block
這裏沒有什麼關於*如何*做到這一點... – 2012-10-09 09:13:47
這是不可能的。這些頭文件不是由Javascript分析的,它們是在您的請求連接時由瀏覽器發送的。 – Cfreak 2011-03-01 19:18:21
HTTP頭包含操作參數,其中大部分定義了請求;你可能會限制到絕對最低限度,但無法擺脫它們全部 – 2011-03-01 19:18:41
@Ivanov,這是真的。但是有許多參數只是浪費。例如,如果我已經建立了會話,則不需要知道用戶代理,接受編碼,語言,字符集,主機或引用者。所有這些數據都可以從標題中安全地刪除,因爲我的服務器永遠不會使用它。它也增加了很多額外的空間!幾乎每包半千字節!我只是覺得它在那裏,如果我只是發送一個原始郵件+內容長度的數據包到服務器會更快樂。 – Mikola 2011-03-01 19:55:28