YouTube API V3 и Etag

Я использую YouTube api v3, и я хотел бы понять, как работает Etag. Я хотел бы использовать его для того, что требуется для кэширования, но я не знаю, что делать в PHP. Не могли бы вы сказать мне, что делать, когда etag восстановится ? пожалуйста. Спасибо за помощь.

3 ответов


согласно документам youtube (https://developers.google.com/youtube/v3/getting-started#etags), eTag в основном используется для определения, изменился ли ресурс. Используйте их для:

  1. оптимизация - кэширование ресурсов youtube в вашем приложении может уменьшить пропускную способность и задержку. При кэшировании сохраните eTag, чтобы вы могли включить его при получении ресурса. Если ресурс не изменился, вы получите код ответа 304 (не MODIFIED), что означает, что вы можете использовать свою кэшированную версию. В противном случае, вы получите обновленную версию ресурса.

  2. Использование Квоты - вы можете уменьшить сумму, которую вы нажмете в квоту, кэшируя данные youtube. В первый раз, когда вы получите ресурс, вы нажмете на свою квоту. Перед отображением ресурса сначала проверьте, изменился ли кэшированный ресурс, что обойдется вам только в 1 единицу квоты. Если ресурс не изменился, в ютубе вернуться 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

Что касается использования eTags в PHP, я могу предложить только пару вещей, так как я никогда этого не делал. YouTube возвращает eTags для каналов и отдельных элементов в ленте, и я не уверен, как их использовать для отдельных элементов в ленте. Но чтобы получить исходный канал, по сути, вы бы использовали curl и добавили eTag в заголовок вашего запроса (PHP cURL пользовательские заголовки). Вы также можете проверить http_cache_etag (http://www.php.net/manual/en/function.http-cache-etag.php)


Я искал аналогичную информацию, но я не мог найти четкий пример на веб-сайте 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.


Я не уверен, что кто-то все еще будет заинтересован, но я опубликовал ответ о том, как использовать etag в использовании api youtube здесь. Идея работает не только для api youtube. Сообщение довольно длинное, но надеюсь, что это может помочь.