Intereting Posts
Остановите мой цикл для регистрации данных дважды Разрешить редакторам редактировать ожидающие сообщения, но не черновики Очистка имени файла после загрузки изображения с URL-адресом, который содержит `% 20` Процесс пользовательского входа Как перезагрузить определенную регистрационную форму роли на ошибках проверки? получать комментарии и получать сообщения в цикле Разрешить клиентам загружать обновленные версии программного обеспечения Правильно ли изменить внешний вид страницы через виджет? Как обойти пределы меню в WordPress? изменение стиля боковой панели Создание фиксированных размеров изображений для разных страниц, исключение размеров при загрузке Уникальная регистрация для новых авторов для регистрации qTranslate получает контент по языку, используя wp_query Как добавить собственный CSS-класс во ВСЕ ссылки Как загрузить jQuery WordPress в разделе <head>

Предотвращение загрузки YouTube нескольких экземпляров проигрывателя JS?

Я заметил на многих сайтах WordPress, над которыми я работаю, когда будет создано более одного видео YouTube, будут вызываться несколько экземпляров проигрывателя JS.

Поскольку это полный мегабайт данных, я пытаюсь определить, есть ли способ иметь только один экземпляр загруженного JS. Я бы подумал, что второй (или более) экземпляр избыточен.

Вот что загружается дважды, для страницы WP с двумя встроенными видео.

https://s.ytimg.com/yts/jsbin/player-en_US-vfle0WwUC/base.js (1.0MiB)

Я не смог найти никакой информации об этом, что немного удивительно, поскольку я думал, что это будет проблемой, которую многие люди захотят решить.

Какие-либо предложения?

Теоретически встраивание youtube выполняется как iframe, а iframe – это виртуальные дополнительные независимые веб-страницы, которые отображаются в одном окне, поэтому содержимое одного iframe не может повлиять на другие iframe.

На практике такой JS будет кэшироваться в браузере. Первый может быть загружен, но второй (если у кого-то в google не был большой момент oooops) будет «обслуживаться» из кеша браузера.

для прямого ответа на вопрос – не так много, что можно сделать на стороне WordPress, чтобы избежать этого, и, скорее всего, ничего не нужно делать

Google I / O 2011: YouTube iframe Player: The Future of Embedding расскажет вам все о будущем. Вы могли бы найти альтернативу iFrame в разделе YouTube Developer, но я сначала посмотрел бы это видео, почему они выбрали iframe.

Чаще всего статические активы, такие как JS-файлы, кэшируются вашим браузером. Значение будущих запросов вытаскивает из кеша вашего браузера, а не извлекает новую копию. В заголовке файла есть что-то, называемое TTL (Time to Live), которое определяет, как долго элемент может быть кэширован. Некоторые ресурсы установлены в 0, и в этом случае следующий запрос не вытащит из кеша. Но моя догадка заключается в том, что Google установил свои TTL на что-то довольно разумное.

Если вы найдете альтернативный вариант, который позволяет вам вставлять только один сценарий и без iframe, рассмотрите возможность переопределения встроенной по умолчанию для YouTube. Просто обратите внимание на первый раз, когда вы создаете встраивание для добавления скриптов, а затем каждый раз после этого просто показываете разметку видео.

 add_filter('embed_oembed_html', 'override_youtube_embed_oembed_html', 99, 4); function override_youtube_embed_oembed_html($html, $url, $attr, $post_id) { static $count = 0; $pos = strrpos($url, "youtube.com"); if ($pos === false) { return $html; } $message = ''; if( ! $count ) { $message = 'First bit of embed magic! '; } $count ++; return $message . "Your Magic Here! How many magics so far? " . $count; }