這個問題讓我很困惑。我將首先解釋我正在嘗試執行的操作: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仍然延遲。爲了防止海報仍然感興趣,我們會回答另一個問題。
感謝評論中的提示,這使我發現了原因。如果你可以把它作爲答案,我會接受一個。
您可以顯示PHP請求和Firefox請求的請求/響應標頭嗎?我很好奇,如果Picasa內部緩存基於頭中某些內容的請求? –
@cillosis在問題中添加了它們。似乎設置cookie可能與它有關係? – Bastiaan
嗯有趣的是,當從Chrome瀏覽器訪問同一個Feed時,數據也過時了。可能某種標記設置在允許訪問最新數據的cookie中? – Bastiaan