我有一个页面需要通过 ajax 加载和处理两个大文件。我事先知道我需要下载它们,但是在另一个大型 javascript 文件加载并准备好处理它们之前,我无法启动 ajax 请求。
结果是我最终以串行而不是并行的方式获取大型 javascript 和大型资产,我认为这可能快近一倍。
是否可以让浏览器预加载这些资产?
您可以在下面的屏幕截图中看到必须在甚至开始下载production.min.js
之前加载。base-2.91.wsz
llama-2.91.mp3
我有一个页面需要通过 ajax 加载和处理两个大文件。我事先知道我需要下载它们,但是在另一个大型 javascript 文件加载并准备好处理它们之前,我无法启动 ajax 请求。
结果是我最终以串行而不是并行的方式获取大型 javascript 和大型资产,我认为这可能快近一倍。
是否可以让浏览器预加载这些资产?
您可以在下面的屏幕截图中看到必须在甚至开始下载production.min.js
之前加载。base-2.91.wsz
llama-2.91.mp3
听起来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!" );
}
});
因此,您将并行执行所有三个调用,并在所有三个调用完成后继续。