计划编写将进行一些CPU密集型计算的客户端HTML5应用程序是否可行且明智? (图像处理)
我知道通常是将计算卸载到服务器的标准,但由于HTML5有新的选项,我想知道我们是否真的可以编写一个将在浏览器中运行的完整应用程序。
如果我理解正确,网络工作者可以帮助完成多线程任务,但我不知道这是如何工作的。
同样,我正在寻找如何处理这个问题的线索,如果有的话。
谢谢!
答案 0 :(得分:4)
不,这根本不是错误的。客户端计算机通常具有大量处理能力,并且这种能力可供浏览器使用。只需确保以一种良好的用户体验来编写应用程序!
Web worker将允许您的UI JavaScript在另一个线程上编号时运行。这听起来非常适合你的任务。
此外,通过执行此客户端,您的应用程序不再依赖于与服务器的网络连接。通过图像处理,我预计会有很多数据从客户端传递到服务器,这可能会很慢。
答案 1 :(得分:1)
我认为编写中等重量的客户端应用程序是完全可以的。但是,请关注您针对Web应用程序的用户类型。如果这些用户正在运行现代计算机,那么一些基本的图像处理就可以了。
我建议的一种设计模式是,如果任务在客户端计算机上完成需要2秒以上,只需将工作指定给服务器并在浏览器上显示处理动画。如果任务将在2秒内完成,您可以在客户端执行此操作。如果您的脚本使用户的计算机速度超过2秒,则很可能他们会注意到速度变慢并且会开始讨厌您的Web应用程序。
如果要处理的图像很大,请将其转换为低分辨率图像,并对低分辨率图像进行所有处理,这样就不会对处理过程造成严重影响。但是,您需要准确记录用户正在执行的所有操作。用户满意后,将日志发送到服务器,让服务器对高分辨率图像进行大量工作。
答案 2 :(得分:1)
这是可能的,它甚至已经完成但是它是否是一个好主意完全取决于上下文 - 谁将使用它,它需要支持哪些浏览器,需要运行哪些设备。
如果您想要继续,结帐的一件事就是asm.js它是javascript的一个子集(因此它适用于所有浏览器),浏览器可以非常好地优化(我认为现在只是Firefox)你可以像对待金属一样进行编码,也可以更合理地将其用作编译目标 - 这样你就可以用另一种语言(比如C ++)编写 - 并编译成在浏览器中运行得非常快的东西。