¿Impediendo que YouTube incrusta cargando múltiples instancias del reproductor JS?

2

He notado en muchos sitios de WordPress en los que trabajo que cuando hay más de un video de YouTube incorporado, se llamarán varias instancias del reproductor JS.

Ya que es un megabyte completo de datos, estoy tratando de determinar si hay una manera de tener solo una instancia del JS cargado. Habría pensado que la segunda (o más) instancias son redundantes.

Esto es lo que se carga dos veces, para una página WP con dos videos incrustados.

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

No he podido encontrar ninguna información sobre esto, lo cual es un poco sorprendente, ya que pensé que sería un problema que muchas personas desearían resolver.

¿Alguna sugerencia?

    
pregunta omega33 08.11.2016 - 03:23

2 respuestas

3

En teoría, la inserción de youtube se realiza como iframes, y iframe son páginas web virtuales independientes adicionales que se representan en la misma ventana, por lo que el contenido de un iframe no puede afectar a otros iframes.

En la práctica, dichos JS se almacenarán en caché en el navegador. El primero puede cargarse, pero el segundo (a menos que alguien en Google haya tenido un gran momento) se "servirá" desde el caché del navegador.

para responder directamente a la pregunta: no hay mucho que se pueda hacer en WordPress para evitarlo, y lo más probable es que no haya nada que deba hacerse

    
respondido por el Mark Kaplun 08.11.2016 - 03:57
1

Google I / O 2011: el reproductor iframe de YouTube: The Future of Embedding le contará todo sobre el pasado futuro. Es posible que pueda encontrar una alternativa a iFrame en la sección YouTube Developer , pero yo vería ese video primero por qué eligió un iframe.

La mayoría de las veces, los recursos estáticos como los archivos JS se almacenan en su navegador. Lo que significa que las solicitudes futuras se extraen del caché de su navegador en lugar de buscar una copia nueva. Hay algo llamado TTL (Time to Live) escrito en el encabezado del archivo que determina durante cuánto tiempo se puede almacenar en caché el elemento. Algunos recursos se establecen en 0, en cuyo caso la siguiente solicitud no se extraerá del caché. Pero mi corazonada es que Google estableció sus TTL en algo bastante razonable.

Si encuentra una alternativa que le permita poner en cola solo una secuencia de comandos y no iframe, considere anular la integración predeterminada para YouTube. Solo tome nota de la primera vez que cree una incrustación para agregar los scripts, luego, cada cierto tiempo después, solo muestre la marca del video.

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;
}
    
respondido por el jgraup 08.11.2016 - 05:00

Lea otras preguntas en las etiquetas