Meteor 在传统网络上的表现如何? (也与 Python/DJango 相比)

How does Meteor perform on legacy networks? (also in comparison with Python/DJango)

注意:我知道这可能看起来是一个基于意见的问题,但我想要一个技术性的答案。

我正在构建一个应用程序,该应用程序针对 Internet 连接不稳定且大部分时间速度较慢的国家/地区(我假设大约 1/2 Mbps)。

在欧洲,Meteor 几乎一直都表现出色,实时更新非常快。但是我不知道它如何在旧网络上执行(高延迟/不稳定)。

另一种方法是使用 Django 作为全栈框架,据我所知这不是实时框架。

非常欢迎任何意见(可能有技术数据支持)。

我没有得到反对票,对于刚开始的人来说这似乎是一个合法的问题。 我目前住在墨西哥,在使用 Meteor 之前我使用 Django。我绝对可以理解。

首先,"fullstack django"不存在。它是一种服务器语言。您仍然需要像 angular/react/blaze 这样的前端框架。然后,您将 django 设置为 REST 后端。从那里,您可以使用 websockets、http 长轮询或拉式更新(用户单击发起请求)。 Meteor 使用 websockets。

不管你选择什么方案,频繁断电还是要靠你自己去开发。例如,假设您有一个延迟加载的图标字体。如果您尝试在用户断开连接时第一次显示它,您将得到那个奇怪的框字符并且它不会反应更新。

其他不那么晦涩的例子可能是数据库更改。由于 meteor 保留了本地副本,因此它通过延迟补偿将竞争对手打得落花流水。如果您断开连接并编辑数据库,Meteor 会在客户端乐观地进行这些更改并将它们放入队列中以发送到服务器。然后,在重新连接后,它将它们发送到服务器并读回合法结果。你能用 Django 做到这一点吗?当然。但是您需要自己编写代码。

此外,当用户看不到页面加载速度很快时,他们会刷新页面。如果您进行服务器端呈现 + ajax,您将发送大量 html 代码。如果您使用的是 Meteor,则用户正在从缓存中加载应用程序,并且只是重新订阅纯数据,没有上下文。这意味着更快的页面加载。

最后想到的是用户体验。使用 websocket,您可以立即显示一条消息,告诉用户他们已断开连接(例如 https://github.com/meteor/react-packages/blob/9b6f0f2677fa782b14a2684f1261ca5ab322a730/examples/react-todos/client/components/AppBody.jsx)。同样,您可以使用长轮询做同样的事情,但实现起来会很有趣。