哪个Web框架产生的开销最小?

时间:2009-03-04 20:13:22

标签: django web-applications frameworks

我在我的网站托管服务上玩Django。

我发现一个简单的Django页面,它只有一些静态文本,并且是从我创建的一个非常简单的模板渲染的,需要很长时间才能渲染。与静态HTML页面相比,加载时间差异大约为2秒。请记住,这是对我的一个简单的测试,没有任何复杂的。另请注意,我的Web托管位于共享服务器(非专用)上,因此我可能会遇到一些CPU限制。

在我看来:

  1. 我有一些基本的CGI / Apache / Django配置错误
  2. Django需要很大的开销,至少在这种特定的情况下。
  3. 我发现#1不太可能,因为我关注了如何设置Django的网站托管服务wiki。所以我们留下了开销问题。

    我的问题是,在网站托管在共享服务器上的情况下,您最好使用哪个Web框架,并且CPU /内存开销必须保持在最低限度?

    <小时/> 编辑:似乎我的配置是我可能想要查看的内容,也许稍后我会打开一个关于如何最好地配置Django的问题。

    目前,我希望能够回答您的经验,一般来说,您可以使用网络框架,以及您在上述方案中发现哪些是最佳的。

6 个答案:

答案 0 :(得分:4)

“我有一些基本的CGI / Apache / Django配置错误”

正确。

首先。 Django第一次返回页面,它需要永远。第一个请求会发生很多初始化。

二。您使用的 具体配置是什么。我们只是在守护进程模式下从mod_python切换到mod_wsgi,并且对性能变化非常满意。

第三。你在用什么数据库?

四。你使用什么测试配置?

第五。您使用了哪些缓存参数和反向代理?

在配置中有很多自由度的可能性很大。


修改

问题“你发现哪些是性能最好的”很难回答。

请参阅http://wiki.python.org/moin/WebFrameworks

有许多框架。很少有人可以检查多个人进行直接对比。

通过静态内容实现最佳性能。制作静态页面的Python应用程序(例如Jinja模板集合)速度最快。

在那之后,很难说。即使http://werkzeug.pocoo.org/涉及一些处理开销,可能在上述场景中是不可接受的。 Python可能很慢。

Django,经过一番努力,通常足够快。例如,与动态内容分开提供静态内容可能是一个巨大的加速。

由于Django会自动执行此操作,因此无需编写每个小的管理页面都会获得巨大的胜利。

答案 1 :(得分:1)

我会说你的设置必须有一些时髦才能获得如此大的性能差异。尝试mod_wsgi(如果你还没有),并按照上面海报的优秀建议。如果Django在所有情况下都真的很慢,那么公司就无法将其用于生产应用程序。很可能是持有请求的Django。一旦你.pyc文件全部排序(自动生成字节码),那么执行应该是相当活泼的。

然而,如果你实际上并不需要所有Django提供的,那么为什么要使用它呢?我在相当大的生产应用程序中使用它,并且我们没有使用它的所有功能......如果你做的事情相当简单,你可能要考虑使用像web.py或{{3}这样的东西。 (或者非基于Python的东西,如果你更愿意的话)。

答案 2 :(得分:1)

像Django或Ruby on Rails这样的框架源于现实世界的需求。随着这些需求的不同,他们的结果不同了。

这是我的体验: 作为一名前PHP程序员,我首选CakePHP表示简单的东西,Symfony表示更高级的应用程序。我看了一下Ruby,但是当时文档很糟糕。现在我正在使用Django。 Django对我很有用。与Symfony相反,我觉得Django带来的灵活性较低,但更容易扩展。

另一种方法是使用'无框架'CherryPy

答案 3 :(得分:1)

我认为主持人可能是个问题。我在我的localhost(Mac)上进行Django开发,它的方式更好。我喜欢WebFaction的廉价托管和亚马逊ec2的高级托管。

框架很强大,可以处理繁重的网站 - 不要痴迷于这些东西。重要的是创建一个干净的产品,Django可以处理它。当你看到应用程序如何在野外处理时,有大约一千个步骤,但是现在,请相信我们在耗尽一大堆参数(包括一个参数)之前你不需要担心框架的固有速度。需要时专用的VPS /实例。

此外,在您的编辑之后 - 我个人认为性能不是编程中的主要问题。以下是关注的问题:

  1. UI / UX效率
  2. UI / UX速度(应用程序缓存)
  3. 精心设计的模特/观点
  4. 系统优化(n层架构等)
  5. 优化流程(良好的QA以减少部署中的故障/瓶颈)
  6. 子系统的优化(数据库等......)
  7. 硬件
  8. 框架内部优化
  9. 不要在比较框架速度时浪费时间。它们的优势在于可扩展的代码,智能架构等......

    在旁注中,请勿使用新的Web应用程序的框架。对不起,我不能说得够响,但现在这是绝对的要求。它甚至不是关于不使用一个的辩论,而是使用哪一个。

    我个人选择了Django,这很棒。但我无法明确地将其他人赶出那里。

答案 4 :(得分:0)

可能两者都有。 Django确实有内置缓存的东西,值得一试。无论如何,任何非缓存页面几乎总是比静态文件花费更长的时间。在这两种情况下都必须读取文件,而在动态页面的情况下,也必须执行该文件。然后,在这两种情况下,都会发送给客户。

答案 5 :(得分:0)

定义共享托管不是运行Django或CakePHP等重型框架的最佳选择。如果你负担得起,购买VPS。

至于性能,可能你的主机使用Python和mod-python,现在不推荐使用。 WSGI是Python支持的webapps的首选标准。