Я использую youtube api v3, и я хотел бы понять, как работает Etag. Я хотел бы использовать его для того, что нужно для кэширования, но я не знаю, что делать в PHP. Не могли бы вы рассказать мне о шагах, которые нужно предпринять после того, как этаг восстановился? Пожалуйста. Спасибо за помощь.
Youtube API V3 и Etag
Ответ 1
В соответствии с документами youtube (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
Что касается использования eTags в PHP, я могу только предложить пару вещей, так как я никогда этого не делал. YouTube возвращает eTags для фидов и отдельные элементы в фиде, и я не уверен, как их использовать для отдельных элементов в фиде. Но чтобы получить исходный канал, по существу, вы будете использовать завиток и добавьте eTag в заголовок вашего запроса (настраиваемые заголовки PHP cURL). Вы также можете проверить http_cache_etag (http://www.php.net/manual/en/function.http-cache-etag.php)
Ответ 2
Я искал аналогичную информацию, но я не смог найти ясный пример на веб-сайте 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.
Ответ 3
Я не уверен, что кто-то все равно будет заинтересован, но я опубликовал ответ о том, как использовать etag в использовании youtube api здесь. Идея работает не только для youtube api. Сообщение довольно длинное, но надеюсь, что оно может помочь.