我如何预加载我知道我将通过XMLHttpRequest请求的资产?

时间:2014-12-11 05:12:10

标签: javascript ajax caching winamp

我有page需要通过ajax加载和处理两个大型文件。我事先知道我需要下载它们,但是我无法启动ajax请求,直到另一个大的javascript文件已加载并准备好处理它们。

结果是我最终以串行而不是并行方式获取大型javascript和大型资产,我认为这几乎可以快两倍。

是否可以让浏览器预加载这些资产?

您可以在下面的屏幕截图中看到,production.min.js之前必须加载base-2.91.wszllama-2.91.mp3甚至可以开始下载。

enter image description here

1 个答案:

答案 0 :(得分:0)

听起来像jQuery.when()就可以了。直接来自文档:

$.when( $.ajax( "/page1.php" ), $.ajax( "/page2.php" ) ).done(function( a1, a2 ) {    
  // a1 and a2 are arguments resolved for the page1 and page2 ajax requests, respectively.    
  // Each argument is an array with the following structure: [ data, statusText, jqXHR ]    
  var data = a1[ 0 ] + a2[ 0 ]; // a1[ 0 ] = "Whip", a2[ 0 ] = " It"    
  if ( /Whip It/.test( data ) ) {    
    alert( "We got what we came for!" );    
  }    
});

因此,您将并行执行所有三个调用,并在完成所有三个调用后继续。