Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有办法在我的网站上更快地加载嵌入式YouTube视频?_Javascript_Optimization_Video - Fatal编程技术网

Javascript 有没有办法在我的网站上更快地加载嵌入式YouTube视频?

Javascript 有没有办法在我的网站上更快地加载嵌入式YouTube视频?,javascript,optimization,video,Javascript,Optimization,Video,我正在写一篇博文,其中使用了来自YouTube和Yahoo视频的多个视频,但我不满意页面渲染所需的时间。除了使用ajax-y方法加载视频外,有没有什么技巧可以让来自不同来源的多个视频更快地加载页面?毫无疑问,从不同网站获取多个视频需要时间。您是否尝试过获取这些视频的副本,将其上载到您的web服务器并以这种方式嵌入您的视频?如果视频来自单一来源,它可能会提高页面的渲染速度。您的“ajax-y方法”将是提高渲染速度的唯一方法。大型站点将使用一个新的缓存,并且具有良好的缓存。没有办法解决需要很长时间的

我正在写一篇博文,其中使用了来自YouTube和Yahoo视频的多个视频,但我不满意页面渲染所需的时间。除了使用ajax-y方法加载视频外,有没有什么技巧可以让来自不同来源的多个视频更快地加载页面?

毫无疑问,从不同网站获取多个视频需要时间。您是否尝试过获取这些视频的副本,将其上载到您的web服务器并以这种方式嵌入您的视频?如果视频来自单一来源,它可能会提高页面的渲染速度。

您的“ajax-y方法”将是提高渲染速度的唯一方法。大型站点将使用一个新的缓存,并且具有良好的缓存。没有办法解决需要很长时间的大型文件

将对象或视频标记保留在HTML之外,然后在页面加载后添加,这将提高可感知的页面加载性能。也许换掉一张截屏图像,与最终的视频大小相同

对于视频标签来说,现在还为时尚早,但最终它的初始化时间可能会比Flash快,因为它是浏览器的一部分,而不是第三方插件


大部分视频加载时间取决于视频的编码/传输方式,这听起来像是超出了您的控制。

嵌入式YouTube视频的问题在于播放器本身需要加载。您可以在嵌入代码的URL中添加“controls=2”,但这将使只有AS2/3播放器在单击后加载播放器

Google+解决这个问题的办法是根本不加载播放器。相反,它加载一个叠加了播放按钮的缩略图。单击后,图像将替换为实际的YouTube播放器iframe嵌入代码,并加载和自动播放

这可以在任何实际使用下面简单javascript的站点上完成。
Google Plus解决方案是提高性能的唯一方法:加载图像存根,然后在用户单击时加载完整播放器

基于@boscharun的解决方案,以下是我使用的解决方案:

<style>
div.video-container a img.playbutton {visibility: hidden;
  content:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAE0AAABNCAQAAABJACE7AAAEvklEQVR4AdyYX0hbVxzHv5CH4kMZVUighTLxKXmMCBGF/MKC26Qy5x6njMEsGCgU8zBQygaDsJVC2IOCoIPhAqtjbFxmXsJl4EPgPpSGhTDSQDPXEbUNRSpGZ/6cwSHk5MaYa8498WGf39sVrt/c8/vz/R38X+mDE4PwwAsfxuEHwY9x+OCFB4Nwog9XjgMuuDEKsoxRuOGCA1fCADwg8Jic2VwyNvKJYvq4cHZULbNatXx2dFwopvMJY2NzaXKmIdGDAfSUWxgB/1cri5mtN8+ZJW+eZ7ZWFuvyRnALPeEmfCDQwmwqVjpgXVE6SMUWZrk8H25CKTfgBYEioV2dSbOrR0Jcnhc3oIgh8K+VTzDb5BP1rzcE21zHMAhkbLC2HD7Lanp0NRyaG5vqDzoC/cGxqdDcaliPZrXDZ6wtxgYXN4zrsIELftDyfDHNzvFiR4tMTIM6xcS0Fnmxw85RTC/P8x7ogiS3QaD4Q1ZrSeq95JpZlJXA5Fppj5mpxR/yv96GBIMgUCrGTJy81KMgmdCjJy+ZiVSM/2VQSlgu3voyZxAkG85g6w/NxbsXx48ynzAn/KN7ILvx6J65OPKJ7o7Vdf6L5bavBUAq4logt93my7ku1y78rTlmrINUhrF+Luf8l2klw7wqm5BMfIuiYE3wah2+ROdfnmc1eWFS4mq8zw11npUEKqZlj1L+WItp/qzDbPWaR1JuG9TLyG23jC/vxbaHFmab24X9qrSq1uZWwgf/BZbJZ+5lEn1Mos+19DhfewdLkZC5pC+KfeP+J4rEmdoU93NtnPAIaFcXs7LTSGKsWvnz1/c+VCHNGRSzdVfnNr2FAZFn1i2DccolY/3td9W2EZ5vAzDhaf60pb3OL2t2/T9/5bBdLKU9Uxp5zHslgcQyklyzliZ4neE5YiOSa+Kn8icO00BfWWQNrIwia6X29++ffSwvbWKaNVhZNA97NyizJaw1qCtpnEo5/Xjkjqw4YdMzWyC40WAUJBZeLSIhjfPvoR596x0ZaVpELNUgjIpLFZqcMR2npDT+6r+++9zekfLriD5wnKDNJTGeQHLSBK+ecifRVYiRtbkEgrOxB4ihntXkpQmqtVz8zkfdSMtqYtCLfcHTPDv1qH1pMi1Zj4pZKnqbt9mjrYZVSBN96revL+dfVsMm7+ZtOI7jAqsTmlMlTWTvt/et3xmaY3WOC8KBjIPOjlidsSnF0jj/7Fi15LEpVufsCIRxcPygapnV6Q/alybTkvuDjRIq8w2LQyCxqDgCvZFWrWU1+uDidzoCYuzxJ1f11V5nvrgLEmH91Xqfa3x8xb/hVSqRaz2rUO6Gf+EZJlGhvetr4oqP5PtaT6bBaVGLiJKSnQbKZ2i1kvlJHKP8DFXuPF49DX8Ksu88FPu106JYY+z7NWUut1L+40f3+yAVLlfpbnDwhG/0yncDmxtV6eDxlyD1G5XNPbRSTv0gjlH9Hiq9ve8bd2dB6rd3m3cepf3YA1Bv7zwkbooqp0++F75f/U2R9P1aIck965Xdr/3XrB0IAAAAMAzyt06jY3zFr2T95T4P+N8N/tryN6q67MU9tK7ITXv/xcLvPH4d85uiWmLlfq1Wf7mVfIVp4HIDzfwP/+fzW/C0yiYAAAAASUVORK5CYII=")
}
div.video-container a:hover .playbutton {visibility: visible;}
</style>              

<div class="video-container">
  <a style="position: relative; left: 0; top: 0;" href="https://www.youtube.com/watch?v=IJl2C8QPVjQ&amp;rel=0">
    <img src="//img.youtube.com/vi/IJl2C8QPVjQ/0.jpg" style="position: relative; top: 0; left: 0; width:100%; height:auto">
    <img class="playbutton" style="position: absolute; top: 50%; left: 50%; margin-left:-38px; margin-top:-38px">
  </a>
</div>

<script>
$('.video-container').click(
  function(e){
    e.preventDefault(); 
    var imgURL = $(this).find("img").attr('src');
    var rx = /\/vi\/([^\/]+)/
    var arr = rx.exec(imgURL);
    var url = "//www.youtube.com/embed/"+arr[1]+"?rel=0&autoplay=1";
    $(this).find("img").hide();
    $(this).append('<iframe width="100%" height="315" src="'+url+'" frameborder="0" allowfullscreen></iframe>');
  }
);
</script>                      

div.video-container a img.playbutton{可见性:隐藏;
内容:网址("数据:图片/png;base64,Ivborw0kgoaaaansuhueugaae0aaabncaaabjace7aaaevkleqvr4adyyx0hbvxzhv5ch4kmzwightLxMcmcbgf/mkc26qy5x6njmesgcGu8zbqygadsjvc2ociphaqtjBxUnrpgz/6cwshk8498wgf39svrt/c8/vz/R38X+mdnww4ww9wwwwww9ww9fx+occ4w9w9f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f+2.中国的一个ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ7O7VDF6L5BAVBUAQ4LOGT93MY7KU1Y782.目前,一个新的研究发现了一个新的ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ2是一个新的JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWANVHZNA97NYIZJAW1QCTPN5/XJJJJJJJJJJJJJJJJJJJJJWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW5NVRGLEMH91xQFA3x8xB/hVSqRaz2.中国政府目前的一个框架(2)中国政府的一个框架(2)中国政府的一个框架(2)中国政府的一个框架(8)中国政府的一个框架(10+7)中国政府的一个框架(10+3+3+10 10 10 10 10+3+中国政府的一个框架(2)中国政府的一个框架(2)中国政府的一个框架(2)中国政府的一个中国政府的一个准准准准准准准8 8 8(8(8 8)8 8 8 8 8 8 8 8 8 8)中国的准8 8(8 8 8 8)准8 8 8 8 8 8 8)准8(8(8)准8)准8)准8)准8(8)准8)准8)准8准8准8准8准8准8准8准8准8准8准8准8准8准8准8准8准8准8准8准8准8准8准8准8准8准8准8准8准8准
}
div.video-container a:hover.playbutton{可见性:可见;}
$('.video container')。单击(
职能(e){
e、 预防默认值();
var imgURL=$(this.find(“img”).attr(“src”);
变量rx=/\/vi\/([^\/]+)/
var arr=rx.exec(imgURL);
var url=“//www.youtube.com/embed/”+arr[1]+“?rel=0&autoplay=1”;
$(this.find(“img”).hide();
$(此)。附加(“”);
}
);
您可以在以下位置现场观看它的运行:

特色包括:

  • 如有必要,降解为IMG
  • 语义的
  • 响应的
  • 使用jQuery

您可以按照以下说明操作:

只是不使用这样的代码:

<iframe width="560" height="315" src="" data-src="//www.youtube.com/embed/OMOVFvcNfvE" frameborder="0" allowfullscreen></iframe>

我将通过以下方式进行更改:

<iframe width="560" height="315" data-src="//www.youtube.com/embed/OMOVFvcNfvE" frameborder="0" allowfullscreen></iframe>


因为,src=“”可以解释为src=”/“在某些浏览器上,会将站点的副本加载到iframe中

谢谢你的建议,chutsu。这是一个很好的观点,但不幸的是,我认为除了嵌入视频之外,不可能获得拷贝。为什么不呢?您可以使用firefox插件“FlashGet”下载flash视频(有关如何下载“flv”视频的更多信息,请使用good old google)。并将flv视频嵌入到你的网站上。我不认为将所有媒体放在同一台服务器上会使它更快。大多数大型网站将图像和其他静态内容放在另一台主机上以提高速度。主要原因是浏览器与单个主机同时连接的次数最多。如果YouTube服务器能比你的服务器快,谢谢你的努力。我正在尝试您的修复:无效。链接已断开!这个解决方案不合适,它有很多问题。当覆盖播放按钮将加载相同的视频多次,如果你点击它一次又一次。同样的视频会重复。解决方案是“加载一个图像存根,然后在用户单击时加载完整的播放器”,这是合适的。如有必要,您需要调整实现以避免多次单击或其他sid