我用几种语言和框架完成了 webdev,包括 python、php 和 perl。我自己托管它们,我最大的网站每天的点击量约为 2 万次。
只要投入资源,任何具有合理速度的语言和框架都可以扩展到每天 2 万次点击。有些人比其他人占用更多的资源。 (Plone,Joomla。我在看着你)。
我的 Witty 网站(还没有生产中)比我的 python 网站需要更多的(从内存中增加大约 5000%)(使用 seige)。 IE。当我尽我所能用 seige 打击它们时,这些诙谐的网站每秒提供更多的页面。
我知道这不是一个真正的通用测试。
机智为您提供的其他速度优势:
多线程
如果您使用内置的 websrever 进行部署(例如,在 ha-proxy 后面)并让您的应用程序是多线程的......它会比 perl 或 php 应用程序加载更少的内存。
通常对于 php 和 perl 应用程序,您将让 Apache 为每个传入连接启动一个进程,每个进程加载整个 php 解释器、所有代码、变量和对象等等。使用 Joomla 和 Wordpress 等重型框架(取决于插件的数量),每个进程的内存消耗都会变得非常庞大。
使用 Wt 应用程序,每个会话都会加载一个 WApplication 实例(一个 C++ 对象),它是整个小部件和内容树。但无论有多少连接,代码使用的内存都保持不变。
内置的 Web2.0 特性
通常对于传统应用程序,它们仍然围绕旧的“http 请求进入”..“我们提供页面”..“完成”风格构建。我知道他们一直在添加越来越多的 AJAXy 类型的东西。
使用 Wt,它默认尽可能使用 WebSockets,只更新需要更新的页面部分。它回退到标准 AJAX,然后如果不支持 http 请求。使用启用 AJAX 和 WebSockets 的客户端,相同的 WApplication C++ 对象会持续使用..因此在设置新会话等方面不会损失任何速度。
回应“C++ 对于 webdev 来说太难了”
C++ 确实有一些学习曲线。九十年代中期,我们用 Java j2ee 做网站。这在当时被认为在商业上是可行的,而且开发起来非常痛苦,但它确实有一个很好的优势,可以鼓励良好的文档和编码实践。
使用脚本网站,很容易走捷径而没有意识到它们的存在。例如,我工作的一个 8 年前的 perl 网站有一些重复的代码,但没有人注意到。每次显示产品列表时,它都会运行相同的 SQL 查询两次。
对于 C++ 站点,我认为机会较少,因为在 perl 站点中,没有那么多编程结构(如函数),它只是 perl 和嵌入式 html。在 C++ 中,您可能会使用带有名称的方法并最终导致名称冲突。
类型
有一次,有一种方法采用 int 标识符,后来我们将其更改为 uuid 字符串。 Python 代码很棒,我们认为不需要更改它;它运行良好。然而,当你把一根绳子传递给它时,有一条线埋在深处,会产生不同的效果。很难追踪错误,损坏了数据库。 (幸运的是只在开发和测试机器上)。
C++ 肯定会抱怨很多,并迫使我们重新编写所涉及的函数,而不是偷懒。
对于 C++ 和 Java,编译器会出错并警告您很多此类错误。
我发现与脚本语言应用程序相比,C++ 应用程序通常不需要单元测试(不要打我)。这是由于语言强制执行了许多您通常会在单元测试中为 Python 应用程序执行的内容。
总结
根据我目前的经验.. Wt 确实比现有框架需要更长的时间 .. 主要是因为现有框架有更多的开箱即用那里的东西。然而,在 Wt 中制作极其定制的应用程序比说 Wordpress 更容易。