2011-04-01 63 views
1

我在代理上使用HttpRequest類來調用API。如果內容未被修改,我對API上的緩存進行了修改以拋出304,以便發出請求的用戶可以使用緩存。HttpRequest不尊重所請求頁面的標題代碼

的API拋出一個標題:

header('HTTP/1.1 304 Not Modified'); 

我確認這是通過檢查頭部工作;在firefox中,ctrl + shift + r總是會返回200,ctrl + r在200之後總是會導致304.但是,在代理端HttpRequest對象總是返回200.我甚至嘗試過修改API它總是拋出304無論但代理仍然會產生200.

我怎樣才能得到它尊重由API拋出的304,所以我可以從代理拋出304以及?

+0

什麼代理是您使用?這聽起來像一個代理配置問題。 – Unsigned 2011-04-01 00:14:21

+0

我也對你的問題代理的目的感到困惑。但無論如何,你是否在你的HttpRequest中發送了「If-Unmodified-Since:'頭文件? – mario 2011-04-01 00:15:33

+0

我在代理上做的所有事情是'$ request = new HttpRequest($ url,$ method_type);'(然後$ request-> send();)和$ method_type是GET – 2011-04-01 00:17:27

回答

0

如果API服務器的高速緩存的邏輯是正確的,那麼你真的應該只發送這樣的條件請求時,得到一個304:

$last_request = time() - 60; 
    // should be an actual timestamp of cached data! 
$last_date = gmdate("D, d M Y H:i:s T", $last_request); 

$request = new HttpRequest($url, $method_type); 
$request->setHeaders(array('If-Unmodified-Since' => $last_date)); 
$request->send();