我使用YouTube API V3,并想了解Etag的工作原理。我想将其用于缓存的目的,但我不知道在PHP中该怎么做。 请告诉我一旦恢复了Etag,要遵循哪些步骤?谢谢帮助。
我使用YouTube API V3,并想了解Etag的工作原理。我想将其用于缓存的目的,但我不知道在PHP中该怎么做。 请告诉我一旦恢复了Etag,要遵循哪些步骤?谢谢帮助。
优化 - 在应用中缓存 YouTube 资源可以减少带宽和延迟。在进行缓存时,请存储 eTag,以便在获取资源时包含它。如果资源未更改,您将收到状态码 304 (未修改),这意味着您可以使用缓存的版本。否则,您将获得更新后的资源版本。
配额使用 - 您可以通过缓存 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),用于请求/响应头中。以下是一篇关于eTags的低水平介绍的好文章:http://www.ibuildings.com/blog/2013/07/etags-uninitiated
至于在PHP中使用eTags,我只能建议几件事情,因为我从未尝试过。YouTube返回feeds和feed中的单个项的eTags,我不确定如何在feed中使用它们来获取单个项。但是要获取原始feed本身,您可以使用curl并将eTag添加到请求头(PHP cURL custom headers)。您还可以查看http_cache_etag(http://www.php.net/manual/en/function.http-cache-etag.php)。
我不确定是否还有人感兴趣,但我已经发布了一个关于如何在使用YouTube API 这里中使用ETag的答案。这个想法不仅适用于YouTube API。帖子很长,但希望它能有所帮助。