2012-11-16 38 views
0

這個問題讓我很困惑。我將首先解釋我正在嘗試執行的操作:PHP中過時的Picasa提要

在我正在開發的一個網站上,我想顯示在Picasa上從特定帳戶檢索到的照片的相冊。爲此,我使用XML提要(http://picasaweb.google.com/data/feed/api/user/userID)。我使用SimpleXMLElement對象加載此提要。

現在奇怪的是,當我在相冊中添加/刪除照片時,更改需要一些時間(通常幾分鐘)才能生效。 PHP對象仍然接收舊數據。 現在這並不奇怪,考慮到Google可能想要限制請求數量,但是,在Firefox中加載Feed時,會立即顯示更改。

什麼是造成這種延遲,我可以做任何事情嗎?檢索Feed時,FF和PHP之間是否有區別?我注意到這個問題已被問到a while back,但沒有任何答案,我認爲它已經有點過時了。

我曾嘗試使用file_get_contents和curl,但都似乎沒有工作。顯然問題不在於PHP,因爲在其他問題中使用了C#。

編輯 - 這裏是從Firefox的請求頭:

Expires: Fri, 16 Nov 2012 19:22:45 GMT 
Date: Fri, 16 Nov 2012 19:22:45 GMT 
Cache-Control: private, max-age=0, must-revalidate 
Content-Type: application/atom+xml; charset=UTF-8; type=feed 
Vary: Accept, X-GData-Authorization, GData-Version, Cookie 
GData-Version: 2.0 
Etag: W/"DEEBQnk9fyp7ImA9WhNQEEU." 
Last-Modified: Fri, 16 Nov 2012 17:24:13 GMT 
Content-Encoding: gzip 
X-Content-Type-Options: nosniff 
X-Frame-Options: SAMEORIGIN 
X-XSS-Protection: 1; mode=block 
Server: GSE 

200 OK 

和捲曲的響應頭:

HTTP/1.1 200 OK 
Expires: Fri, 16 Nov 2012 19:30:26 GMT 
Date: Fri, 16 Nov 2012 19:30:26 GMT 
Cache-Control: private, max-age=0, must-revalidate, no-transform 
Set-Cookie: _rtok=lL_1sPFA07ra; Path=/; HttpOnly 
Set-Cookie: S=photos_html=jHfi_UGm4xVujZVehiIOpw; Domain=.google.com; Path=/; HttpOnly 
Content-Type: application/atom+xml; charset=UTF-8; type=feed 
Vary: Accept, X-GData-Authorization, GData-Version, Cookie 
GData-Version: 2.0 
ETag: W/"DEEBQnk9fyp7ImA9WhNQEEU." 
Last-Modified: Fri, 16 Nov 2012 17:24:13 GMT 
X-Content-Type-Options: nosniff 
X-Frame-Options: SAMEORIGIN 
X-XSS-Protection: 1; mode=block 
Server: GSE 
Transfer-Encoding: chunked 

編輯2:我想我想通了!顯然,只有在匿名查看時,Feed纔會每隔幾分鐘更新一次。但是,Firefox已經存儲了我的Picasa登錄會話,因此它被視爲授權請求。 Chrome沒有這個會話,因此也沒有立即更新。一旦我允許Picasa在Chrome中存儲cookie,它也會立即更新,而Opera仍然延遲。爲了防止海報仍然感興趣,我們會回答另一個問題。

感謝評論中的提示,這使我發現了原因。如果你可以把它作爲答案,我會接受一個。

+1

您可以顯示PHP請求和Firefox請求的請求/響應標頭嗎?我很好奇,如果Picasa內部緩存基於頭中某些內容的請求? –

+0

@cillosis在問題中添加了它們。似乎設置cookie可能與它有關係? – Bastiaan

+0

嗯有趣的是,當從Chrome瀏覽器訪問同一個Feed時,數據也過時了。可能某種標記設置在允許訪問最新數據的cookie中? – Bastiaan

回答

0

檢查PHP請求和Firefox請求的請求/響應標頭。這應該提供洞察,爲什麼它在一種情況下,而不是另一種。

就你的情況而言,正如你自己確定的(好工作btw),Firefox有你的Picasa授權證書,它允許檢索非緩存版本。