2011-10-19 148 views
4

我一直的想法,做一個HEAD請求,而不是一個GET要求的是速度更快(無論資源的大小),並因此不得不在某些解決方案,它的優勢。然而,在使用Python進行HEAD請求(對於一個5 MB以上的動態生成的資源)時,我意識到需要花費與請求GET(差不多27秒而不是'不到2秒')的請求希望)。HEAD請求對GET請求

使用的一些urllib2的解決方案,使這裏找到一個HEAD要求,甚至使用pycurl(設置headersnobodyTrue)。他們兩人都在同一時間。

我在概念上錯過了什麼嗎?是否有可能使用Python來做一個'快速'HEAD請求?

+0

作爲以下注釋的補充,一些服務器* do *對HEAD請求的響應速度更快。 –

回答

7

服務器正在大量的時間,而不是你的請求或網絡。如果它是一個動態資源,那麼很可能服務器在構建它之前並不知道所有的頭信息,特別是Content-Length。所以無論你做HEAD還是GET,它都必須構建整個事物。

+0

這是有道理的,謝謝。 – Ben

1

的響應時間是由服務器主導,而不是由你的要求。 HEAD請求返回的數據較少(只是頭部),因此概念上它應該更快,但實際上,許多靜態資源被緩存,因此幾乎沒有可測量的差異(只是額外數據包下線的時間)。

1

機會是,那請求時間的大部分實際上是任何方法產生的服務器,而不是將其傳送到您的時間上的5 + MB響應。

在許多情況下,響應一個HEAD請求時,Web應用程序將仍然執行完整的腳本 - 它只是將不會發送全身返回給請求者。

如果你有機會到正在處理該請求的代碼,你可以在那裏添加一個條件,使其處理不同,具體取決於該方法,這可能會加速它的顯着的請求。