【发布时间】:2023-04-01 12:35:01
【问题描述】:
我正在开始一个新的 PHP 项目,并且正在考虑采用 Laravel。来自 Java / Spring 背景,我很高兴看到一个类似的 MVC / Dependency Injection 框架将 Web 应用程序中通常需要的所有常见内容捆绑在一个结构良好的包中。在设置路由等方面,Laravel 似乎也很容易采用(比 Symfony2 更容易)。
但是,在做了一些进一步的研究之后,我担心这个框架会引入很多性能开销并加载很多我不需要的东西,从而使页面变得比应有的速度慢。 我的应用程序将是一个典型的基于表单的应用程序,具有一些数据库查询和 Javascript/AJAX 作为前端。然而,一项非常重要的非功能性要求是性能。我不希望页面加载一秒钟(只要数据库明显快速响应)。
无论哪种方式,我都打算使用 Smarty(部分是因为我对它有很多经验,部分是因为它比 Blade 有更多的文档记录和更多的功能,而且对我来说语法比 Twig 稍微干净一些),虽然模板引擎真的不是这个问题的重点。
Laravel 真的比使用带有普通 PDO 和 Smarty 模板的 Controller(普通 PHP 脚本)开发页面要慢得多吗? Laravel 与以 Doctrine2 ORM 和 Smarty 模板作为视图的控制器相比呢?
我对这些框架有点陌生,因此非常感谢 Laravel 引入的任何信息、基准或一般性描述(相对于普通 PDO 和相对于 Docrine)。
【问题讨论】:
-
您来自 Java/Spring 背景...与纯自制 Java 代码相比,您发现使用 Spring 慢了多少?您从使用 Spring 中获得了什么好处?根据框架给您带来的好处而不是性能开销来评估框架的使用,因为性能开销通常是一个虚假的论点,因为它在更大的性能规模(数据库访问等)中可能非常微不足道
-
Laravel + OPcache 相当快,使用 HHVM 可能会更快。
-
不是你的问题的答案,但很高兴知道 Laravel 4.3(即将发布的版本)将支持路由缓存,这可以减少响应时间(观看 laracasts.com/series/whats-new-in-laravel-4-3/episodes/8)
-
@MarkBaker 感谢您的想法。 Java/Spring 是一个不同的故事,因为很多繁重的引导(而且它非常繁重,一个相当大的应用程序很容易花费大量的秒数)是在启动时完成的,而在PHP 在接收页面的 HTTP 请求时做了很多工作,这是我最担心的。当涉及到可维护性和保持代码干净且没有样板时,这些好处显然非常重要(这就是我考虑 Laravel 的原因)。
-
@jbx Laravel 只加载你实际使用的东西,例如,如果你从不使用任何
DB::*方法或模型,那么所有 ORM 和数据库相关的代码都不会被加载.