注意:我知道这可能看起来是一个基于意见的问题,但我想要一个技术性的答案。
我正在构建一个应用程序,该应用程序针对 Internet 连接不稳定且大部分时间缓慢(我假设大约 1/2 Mbps)的国家/地区。
在欧洲,Meteor 几乎一直都表现得非常好,实时更新非常快。但是我不知道它如何在遗留网络上执行(高延迟/不稳定)。
另一种方法是使用 Django 作为全栈框架,据我所知,它不是实时的。
非常欢迎任何意见(可能有技术数据支持)。
注意:我知道这可能看起来是一个基于意见的问题,但我想要一个技术性的答案。
我正在构建一个应用程序,该应用程序针对 Internet 连接不稳定且大部分时间缓慢(我假设大约 1/2 Mbps)的国家/地区。
在欧洲,Meteor 几乎一直都表现得非常好,实时更新非常快。但是我不知道它如何在遗留网络上执行(高延迟/不稳定)。
另一种方法是使用 Django 作为全栈框架,据我所知,它不是实时的。
非常欢迎任何意见(可能有技术数据支持)。
我没有得到反对票,对于刚入门的人来说,这似乎是一个合法的问题。我目前住在墨西哥,在 Meteor 之前我使用 Django。我绝对可以联系起来。
首先,“fullstack django”不存在。它是一种服务器语言。你仍然需要一个像 angular/react/blaze 这样的前端框架。然后,您将 django 设置为 REST 后端。从那里,您可以使用 websockets、http longpolling 或拉式更新(用户单击发起请求)。Meteor 使用 websockets。
无论您选择什么选项,您仍然需要为频繁中断进行开发。例如,假设您有一个延迟加载的图标字体。如果您在用户断开连接时第一次尝试显示它,您将得到那个奇怪的框字符并且它不会被动更新。
其他不那么晦涩的例子可能是数据库更改。由于流星保留了本地副本,因此它通过延迟补偿将竞争从水中吹了出来。如果您断开连接并编辑数据库,Meteor 会乐观地在客户端上进行这些更改并将它们放入队列中以发送到服务器。然后,在重新连接后,它将它们发送到服务器并读回合法结果。你能用 Django 做到这一点吗?当然。但是您需要自己编写代码。
此外,当用户没有快速看到页面加载时,他们会刷新页面。如果您进行服务器端渲染 + ajax,您将发送大量的 html 代码。如果您使用 Meteor,则用户正在从缓存中加载应用程序,并且只是重新订阅纯数据,没有上下文。这意味着更快的页面加载。
最后的想法是用户体验。使用 websocket,您可以立即显示一条消息,告诉用户他们已断开连接(例如https://github.com/meteor/react-packages/blob/9b6f0f2677fa782b14a2684f1261ca5ab322a730/examples/react-todos/client/components/AppBody.jsx)。同样,您可以使用 longpolling 做同样的事情,但会很有趣。