【发布时间】:2011-04-16 05:16:49
【问题描述】:
Zend Framework 是一个很好的框架,但不是很快。 您能否判断是否值得将 Zend Framework 用于高负载项目,例如,可以包含大约十或十万用户的电子邮件营销服务? 使用 Zend Framework 是否可以达到可接受的性能? 有没有人有这样的经历? 非常感谢。
【问题讨论】:
标签: php zend-framework
Zend Framework 是一个很好的框架,但不是很快。 您能否判断是否值得将 Zend Framework 用于高负载项目,例如,可以包含大约十或十万用户的电子邮件营销服务? 使用 Zend Framework 是否可以达到可接受的性能? 有没有人有这样的经历? 非常感谢。
【问题讨论】:
标签: php zend-framework
就我所见,Zend Framework 性能的权威性辩护和性能优化建议来自 Padraic Brady:
PHP Framework Benchmarks: Entertaining But Ultimately Useless
特别注意他对性能优化的四项建议:
不要使用 Zend_Application。虽然 Zend_App 非常适合在标准化结构中创建一致的复杂引导程序,但它不会对基线性能没有显着的性能影响。更直接的引导程序(在 Zend_App 到来之前是 ZF 的典型方式)要快得多,也可以在没有配置文件的情况下完成。
跳过使用 ViewRenderer 插件。如果没有 ViewRenderer,您需要手动配置 Zend_View 并将 render() 调用添加到控制器。这实际上非常简单,而且速度相当快 - 快速从来都不是 ViewRenderer 基因的一部分。
使用自动加载。从框架库中剥离 require_once 调用,以便忽略不需要的文件。将 Zend_Loader_Autoloader 的使用替换为不那么疯狂的自动加载器功能。事实上,祈祷 Zend_Loader 从未被使用过——它执行了很多文件操作,迄今为止,我从未向我解释过这些操作有任何价值。
预加载所有内容(Symfony 2 Preview 可以!)。它会为您购买一些性能 cookie 并平衡速度基线。使用简单的预加载脚本并不难。
【讨论】:
我们已经在很多高流量网站中使用了 ZF,到目前为止我们还没有遇到任何问题。不过,我们确实必须跳过一些低悬的箍。
一些建议:
我们的底线是:开发时间比硬件昂贵得多。代码的灵活性和更高的重用性完全胜过我们必须处理的任何轻微的性能损失。在大多数情况下,性能开销是非常固定的。
【讨论】:
你问:
是否有可能使用 Zend Framework 获得可接受的性能?有没有人有这样的经历?
是的,我曾使用过拥有数百万用户的网站。但是您确实需要使用技术来处理高负载。缓存等...
CDN 可以提供很大帮助。考虑使用云进行开发。开始使用 Amazon 可能会很痛苦,但如果需要,它可以帮助您扩展。
我想我的意思是,该框架可能会降低您的性能,但有助于使维护成为可能并更快地构建它(一旦您克服了学习曲线)。然后,您必须评估需要采取哪些措施来提高性能(尽管从一开始就计划明显的问题会很有帮助)。
【讨论】:
我知道有几家公司在高性能/高负载场景中使用采埃孚。我不知道哪些我可以说,哪些我不能说,但其中一些是必须处理流行电视节目的媒体公司。其他人处理现场体育赛事。其他是需要为内部组织服务的价值数十亿美元的公司。因此,许多运行高负载站点的公司都在使用 ZF。我们的一个案例研究是 Fox Interactive (http://framework.zend.com/about/casestudies),我知道还有其他几个客户将它用于高性能网站。
Zend Framework MVC 开箱即用,速度很快。我的博客在没有缓存的情况下大约 100 毫秒后返回,并且在我的首页上发生了相当多的事情。我可能会通过一些内部缓存将其降至 50 毫秒(整页缓存可以将其降至个位数毫秒,但不会触及 ZF)。
【讨论】:
赞同乔的回答。我还看到 ZF 部署在处理数百万个请求的几个站点上,但尚未遇到问题。在处理如此大量的流量时,最好使用框架之外的其他策略,包括但不限于缓存和使用 CDN。
我发现大多数框架会为每个请求调用或创建许多类实例,我认为这就是导致人们说框架 X 很慢而没有任何实际经验的原因。使用加速器和缓存可以轻松减轻您在那里受到的任何影响。
如果您已经雇佣了一个开发人员团队,我建议您使用他们觉得最舒服和最有经验的东西。最好的情况是他们能够针对该框架调整代码。
【讨论】:
很多框架,实际上是任何框架,都用于构建和管理项目开发,但生成的项目“只是”php、html、css 等,与任何其他 php 网站相同。那么你有什么证据,这是针对其他框架和非框架构建站点的真实时间,而不是轶事证据,证明 Zend 项目站点很慢。
编辑——下面的答案—— 我不认为框架使用的结构会损害性能。可能更多的是PHP是否可以接受的问题,然后是网站设计和加载优化说JavaScript等增加了多少“开销”。我想使用Yui指南来缩小JavaScript和CSS并将它们加载到正确的顺序并确保 PHP 代码高效会有所帮助。您还可以使用其他标准的东西,例如 DB Caching 和 Zend Accelerator 来加快速度。需要注意的一件事是数据库连接。使用 ORM 层可能会产生影响。
但是回到关于框架的原始问题,我认为这类似于询问使用 Eclipse 或 Textmate 是否会影响生成网站的速度。
【讨论】: