Youtube API V3和Etag

Web*_*ter 19 youtube etag youtube-api

我使用youtube api v3,我想了解Etag是如何做到的.我想用它来缓存目的,但我不知道在PHP中做什么.你能告诉我etag恢复后要遵循的步骤吗?请.感谢帮助.

Red*_*pia 24

根据youtube文档(https://developers.google.com/youtube/v3/getting-started#etags),eTag主要用于确定资源是否已更改.用它们:

  1. 优化 - 在应用中缓存youtube资源可以减少带宽和延迟.缓存时,存储eTag,以便在获取资源时包含它.如果资源没有更改,您将获得304响应代码(NOT MODIFIED),这意味着您可以使用缓存版本.否则,您将获得资源的更新版本.

  2. 配额使用情况 - 您可以通过缓存YouTube数据来减少拨入配额的金额.第一次获得资源时,您将获得配额.在显示资源之前,首先检查您的缓存资源是否已更改,这将只花费1个配额单位.如果资源未更改,youtube将返回304响应.如果它已更改,您可以再次获取资源,根据您获得的内容计算各种配额单位.有关配额的更多信息:(https://developers.google.com/youtube/v3/getting-started#quota).

  3. 覆盖保护 - 如果要覆盖资源,包括eTag将确保您不会覆盖较新版本的资源.

eTags是HTTP 1.1规范的一部分(http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.19),用于请求/响应的标头中.这是一篇很好的文章,在较低的层次上讨论它们:http://www.ibuildings.com/blog/2013/07/etags-uninitiated

至于在PHP中使用eTags,我只能提出一些事情,因为我从来没有这样做过.YouTube会在Feed中为Feed和各个项目返回eTag,但我不确定如何将其用于Feed中的各个项目.但是要获取原始Feed本身,基本上您将使用curl并将eTag添加到请求的标头(PHP cURL自定义标头).您可能还想查看http_cache_etag(http://www.php.net/manual/en/function.http-cache-etag.php)

  • @Redtopia,此答案的配额使用部分不正确.http://jsfiddle.net/fw3776vs/这个链接是节点代码(遗憾的是它不能在JSFiddle中运行),但是它使用1000个配额点的呼叫,但是对于所有不是第一个的呼叫使用etag .如果在运行后查看控制台,仍会使用1000个配额点.自己动手吧. (4认同)