gpt4 book ai didi

javascript - 使用 Socket.io 的异步模块加载 (AMD)

转载 作者:搜寻专家 更新时间:2023-11-01 00:09:04 25 4
gpt4 key购买 nike

我正在开发一个 Web 应用程序并测试一些东西,例如使用 Socketio 的 WebSocket。目前我正在考虑像 requierejs 和 Socketio 这样的解决方案。它工作正常,我可以加载 Javascript 文件并使用“new Function()”(安全性?)解析它们。如果我使用“正常”(使用脚本元素)AMD 加载文件,性能会更好吗?

system.create.script(['rg.observable', 'rg.route', 'rg.bindings.*', 'rg.utils.*'], function() {

var bind = function(node) {}
return bind;

});

谢谢

最佳答案

td;dr,我真的认为不值得花时间在这上面。

关于性能,我真的会说你必须在你的生产环境中尝试它。

移动部件太多,因此在一个案例中每个部件都可能更快。首先是不同的浏览器,每个浏览器在不同的地方可能更快或更慢。然后 socket.io 根据浏览器和网络支持有不同的传输(并非所有地方都支持 websockets)。然后是可能具有高或低带宽或延迟的客户端网络。您服务器上的负载和服务器数量也会影响哪个更快。

但根据我的经验(虽然不多),它看起来是这样的:

如果您的应用程序足够小,我对您的建议是将您的 requirejs 模块编译并压缩到一个或两个文件中,然后使用常规的 http.在大多数情况下,它应该比动态加载 socket.io 更快,因为您必须等待 socket.io 脚本被下载和执行,等待 socket.io 传输被设置(握手和东西),然后动态解析依赖关系 waterfall 效应就在那里发生。

但是如果你有一个包含许多模块的巨大应用程序并且你不想在开始时加载所有模块(假设一些非常繁重的东西用户不会在每次加载它时都使用它的所有功能),那么你可能认为这可能值得研究。但不同之处在于只有一个 websocket 连接(让我们忽略其他 socket.io 传输,因为它们也使用 http)与 2 或 3(超过这个,这意味着你做错了什么!)http 请求。

从技术上讲,如果您使用的是 http keep-alive,那么假设您的设置正确,它们都应该花费相同的时间,因为浏览器会保持 http 连接一分钟或更长时间,所以您不会创建新的,所以它类似于 websocket 连接。现在,如果您加入 SPDY,那么使用 socket.io 甚至可能会更慢,因为这只是额外的开销。

现在谈论一种动态加载模块的好方法和高效方法,你应该看这个演讲:Malte Ubl & John Hjelmstad: A novel, efficient approach to JavaScript loading

关于javascript - 使用 Socket.io 的异步模块加载 (AMD),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12160254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com