全部,
我正在处理一个发出大量 URLLoader.load() 请求的 Flash/AS3 项目。
我应该将它们排队以便在任何时候只有一个打开的请求吗?或者,允许多个打开请求是一个好习惯吗?
打开请求的数量是否有限制?
(我假设我可以管理 UI 中的含义)。
我已经在本地运行了最多 5 个同时请求的测试,它工作得很好。但我需要确保该应用程序能够在现场运行,适用于使用旧 PC、旧浏览器、具有多个打开选项卡的浏览器等的用户。
非常感谢您的任何建议和见解!
全部,
我正在处理一个发出大量 URLLoader.load() 请求的 Flash/AS3 项目。
我应该将它们排队以便在任何时候只有一个打开的请求吗?或者,允许多个打开请求是一个好习惯吗?
打开请求的数量是否有限制?
(我假设我可以管理 UI 中的含义)。
我已经在本地运行了最多 5 个同时请求的测试,它工作得很好。但我需要确保该应用程序能够在现场运行,适用于使用旧 PC、旧浏览器、具有多个打开选项卡的浏览器等的用户。
非常感谢您的任何建议和见解!
很久以前,当我尝试加载大量图像时,我遇到了这个问题。它们都是本地的,所以我只是将它们与装载机一起排队。排队时间调试图像为何为空:S
我不确定是否在任何地方都提到了限制,但我发现(如果没有记错的话)大约 30 给我带来了问题。在那之后,我认为它会重用旧连接:所以如果你有 100 个 load() 调用,只有最后 30 个左右会被加载。
通常我一次排队大约 10 个,然后在完成时加载其余的。多个连接没有真正的问题 - 尽管它们会开始占用 CPU 功率等。
如果您只想忽略这一点,请查看 BulkLoader:http ://code.google.com/p/bulk-loader/ 之类的内容,它是为此创建的
我不知道这是否有任何硬性限制,但 5 个同时请求听起来很合理。我知道大多数浏览器使用 6 个同时连接,这可能也是 Flash 的限制。
我会使用 5 个加载器之类的东西,并将所有超出此范围的加载事务排队。
这个问题很久以前了。我从谷歌来到这里,但感谢您的回答。
事情可能已经改变了。我只是在 Flex 4.6 和 AS 3 上测试重用 URLLoader.load。
这里有一个棘手且未记录的限制。加载器可以重用,但只有最后一个请求在一次回调中发出。
前任。
timer:Timer = new Timer(5000);
timer.addEventListener(TimerEvent.TIMER, timerHandle);
timer.start();
var loader:URLLoader = new URLLoader(); // and need to add listeners for response
function timerHandle(e:TimerEvent):void {
loader.load(certainURLRequest);
}
这很好用。但是下面的方法没有。
function timerHandle(e:TimerEvent):void {
loader.load(firstURLRequest); // this request didn't get issued
loader.load(secondURLRequest); // this request got sent
}
我不知道内部情况。这可能与 ActionScript 的单线程 EventLoop 方式有关,请求会在回调返回后处理,最后一个覆盖前一个。这都是我的猜测。
希望这对来到这里的追随者有所帮助。