0

この問題は本当に私を困惑させます。私がやろうとしていることを説明することから始めましょう:

開発中のウェブサイトで、Picasaの特定のアカウントから取得した写真を含むアルバムを表示したいと思います。このために、私はXMLフィード(http://picasaweb.google.com/data/feed/api/user/userID)を使用しています。SimpleXMLElementオブジェクトを使用してこのフィードをロードします。

奇妙なことに、アルバムに写真を追加したり、アルバムから写真を削除したりすると、変更が有効になるまでに時間がかかります(通常は数分)。PHPオブジェクトは引き続き古いデータを受け取ります。Googleがリクエストの量を制限したいと思うかもしれないことを考えると、これはそれほど奇妙なことではありませんが、Firefoxにフィードをロードすると、変更がすぐに表示されます。

この遅延の原因は何ですか?それについて何かできますか?フィードを取得するときのFFとPHPの違いはありますか?この質問はしばらく前に尋ねられたのに気づきましたが、答えがなく、それを壊すには少し古すぎると思いました。

file_get_contentsとcurlの両方を使用してみましたが、どちらも機能しないようです。他の質問ではC#が使用されていたため、明らかに問題はPHPにありません。

編集-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 に答える