Youtube API V3 and Etag



我使用youtube api v3,我想了解Etag是如何实现的。我想把它用于缓存目的,但我不知道在PHP中该怎么做。你能告诉我etag恢复后要采取的步骤吗?请谢谢你的帮助。

根据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将确保您不会覆盖该资源的较新版本。

eTag是HTTP 1.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)

我一直在寻找类似的信息,但在youtube网站上找不到明确的例子。另一方面,脸书似乎也在使用类似的方法(Etags来检查资源是否发生了变化),我在脸书开发者区发现的这两个链接可能会有所帮助:

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

第一个以更简单、更详细的方式解释了如何使用etag,并提供了一些请求/响应示例。

第二个链接提供了一个PHP示例,说明如何检索资源、提取etag并在后续请求中使用它。

当然,这些链接包含与facebook网站相关的信息,但在很大程度上,它们也可以应用于youtube。

我不确定是否还有人会感兴趣,但我已经在这里发布了关于如何在使用youtube api时使用etag的答案。这个想法不仅适用于youtube api。这篇文章很长,但希望能有所帮助。

相关内容

  • 没有找到相关文章

最新更新