Ответ 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)