我使用youtube api v3,我想了解Etag是如何做到的。我想用它来缓存目的,但我不知道在PHP中做什么。 你能告诉我etag恢复后要遵循的步骤吗?请。谢谢你的帮助。
答案 0 :(得分:21)
根据youtube docs(https://developers.google.com/youtube/v3/getting-started#etags),eTag主要用于确定资源是否已更改。将它们用于:
优化 - 在应用中缓存youtube资源可以减少带宽和延迟。缓存时,存储eTag,以便在获取资源时包含它。如果资源没有更改,您将获得304响应代码(NOT MODIFIED),这意味着您可以使用缓存版本。否则,您将获得资源的更新版本。
配额使用情况 - 您可以通过缓存youtube数据来减少拨入配额的金额。第一次获得资源时,您将获得配额。在显示资源之前,首先检查您的缓存资源是否已更改,这将只花费1个配额单位。如果资源未更改,youtube将返回304响应。如果它已更改,您可以再次获取资源,根据您获得的内容计算各种配额单位。有关配额的更多信息:(https://developers.google.com/youtube/v3/getting-started#quota)。
覆盖保护 - 如果要覆盖资源,包括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 custom headers)。您可能还想查看http_cache_etag(http://www.php.net/manual/en/function.http-cache-etag.php)
答案 1 :(得分:4)
我一直在寻找类似的信息,但我在youtube网站上找不到明确的例子。另一方面,似乎facebook正在使用类似的方法(Etags来检查资源是否已经改变),我在facebook开发者领域找到的这两个链接可能会有所帮助:
https://developers.facebook.com/docs/reference/ads-api/etags-reference/和https://developers.facebook.com/blog/post/627/
第一个以更简单,更详细的方式解释了如何使用etags并提供一些请求/响应示例。
第二个链接提供了一个PHP示例,说明如何检索资源并提取etag并在后续请求中使用它。
当然这些链接包含与facebook网站相关的信息,但是很大程度上它们也可以应用于youtube。
答案 2 :(得分:1)
我不确定是否有人仍会感兴趣但我已经发布了关于如何在使用youtube api here时使用etag的答案。这个想法不仅适用于youtube api。这个帖子很长,但希望它可以提供帮助。