0

这个问题真的让我很困惑。我将首先解释我正在尝试做的事情:

在我正在开发的网站上,我想显示从 Picasa 上的特定帐户检索到的照片的相册。为此,我使用了 XML 提要 ( http://picasaweb.google.com/data/feed/api/user/userID )。我使用 SimpleXMLElement 对象加载此提要。

现在奇怪的是,当我在相册中添加/删除照片时,更改需要一些时间(通常是几分钟)才能生效。PHP 对象仍然接收旧数据。现在这并不奇怪,考虑到 Google 可能希望限制请求的数量,但是,当在 Firefox 中加载提要时,更改会立即显示。

是什么导致了这种延迟,我能做些什么吗?检索提要时,FF 和 PHP 有什么区别吗?我注意到这个问题已经被问过一段时间了,但没有任何答案,我认为它太老了,无法解决它。

我曾尝试同时使用 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

以及 curl 的响应标头:

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:我想我想通了!显然,匿名查看时,提要每隔几分钟更新一次。但是,Firefox 存储了我的 Picasa 登录会话,因此它被视为授权请求。Chrome 没有此会话,因此也没有立即更新。一旦我还允许 Picasa 在 Chrome 中存储 cookie,它确实会立即更新,而 Opera 仍然延迟。万一发帖人仍然感兴趣,我会回答另一个问题。

感谢评论中的提示,这使我发现了原因。如果你能把它写下来作为答案,我会接受那个。

4

1 回答 1

0

检查 PHP 请求和 Firefox 请求的请求/响应标头。这应该可以深入了解为什么它在一种情况下而不是另一种情况下起作用。

就您而言,正如您自己确定的那样(顺便说一句,干得好),Firefox 拥有您的 Picasa 授权凭据,可以检索非缓存版本。

于 2012-11-16T21:56:15.947 回答