web-dev-qa-db-ja.com

Youtube APIV3とEtag

私はyoutubeapi v3を使用していますが、Etagがどのように機能するかを理解したいと思います。キャッシュの目的で使用したいのですが、PHPで何をしたらいいのかわかりません。 etagが回復した後の手順を教えてください。お願いします。手伝ってくれてありがとう。

19
Webmaster

Youtubeのドキュメント( https://developers.google.com/youtube/v3/getting-started#etags )によると、eTagは基本的にリソースが変更されたかどうかを判断するために使用されます。それらを次の目的で使用します。

  1. 最適化-アプリでYouTubeリソースをキャッシュすると、帯域幅と遅延を減らすことができます。キャッシュするときは、リソースを取得するときに含めることができるようにeTagを保存します。リソースが変更されていない場合は、304応答コード(変更されていません)が表示されます。これは、キャッシュされたバージョンを使用できることを意味します。それ以外の場合は、リソースの更新バージョンを取得します。

  2. クォータの使用量-YouTubeデータをキャッシュすることで、クォータを利用する量を減らすことができます。初めてリソースを取得するときに、クォータを利用します。リソースを表示する前に、まずキャッシュされたリソースが変更されているかどうかを確認します。これには1クォータユニットしかかかりません。リソースが変更されていない場合、youtubeは304応答を返します。変更された場合は、リソースを再度取得できます。取得する対象に応じて、さまざまなクォータユニットのコストがかかります。割り当ての詳細:( https://developers.google.com/youtube/v3/getting-started#quota )。

  3. 上書き保護-eTagを含めてリソースを上書きする場合は、新しいバージョンのリソースを上書きしないようにします。

eTagはHTTP1.1仕様の一部であり( http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.19 )、リクエストのヘッダーで使用されます/応答。これらについて低レベルで説明している優れた記事は次のとおりです。 http://www.ibuildings.com/blog/2013/07/etags-uninitiated

PHPでeTagを使用する限り、私はそれを行ったことがないので、いくつかのことを提案することしかできません。 YouTubeは、フィードとフィード内の個々のアイテムのeTagを返しますが、フィード内の個々のアイテムにそれらを使用する方法がわかりません。ただし、元のフィード自体を取得するには、基本的にcurlを使用して、リクエストのヘッダーにeTagを追加します( PHP cURLカスタムヘッダー )。 http_cache_etag( http://www.php.net/manual/en/function.http-cache-etag.php )もチェックしてみてください。

24
Redtopia

同様の情報を探していましたが、YouTubeのウェブサイトで明確な例を見つけることができませんでした。一方、Facebookは同様のアプローチ(リソースが変更されたかどうかを確認するためのEtags)を使用しているようで、Facebook開発者エリアで見つけた次の2つのリンクが役立つ可能性があります。

https://developers.facebook.com/docs/reference/ads-api/etags-reference/ および https://developers.facebook.com/blog/post/627/

1つ目は、etagの使用方法をより簡単かつ詳細に説明し、いくつかの要求/応答の例を示します。

2番目のリンクは、リソースを取得してetagを抽出し、後続のリクエストで使用する方法に関するPHPの例を提供します。

もちろん、これらのリンクにはFacebookのWebサイトに関連する情報が含まれていますが、大部分はYouTubeにも適用できます。

4
J Mac

誰かがまだ興味を持っているかどうかはわかりませんが、youtube apiを使用する際にetagを使用する方法についての回答を投稿しました ここ 。このアイデアは、YouTubeAPIだけでなく機能します。投稿はかなり長いですが、それが役立つことを願っています。

1
RLVillacalos