多种型号时大规模的Laravel App性能

时间:2016-12-15 16:59:23

标签: php performance laravel laravel-5.3

我正在构建一个大型PHP Laravel应用程序。它是开发人员的一个应用程序,由许多较小的应用程序/模块组成。

例如类似于PinBoard的书签应用程序,类似于Evernote的Notebook应用程序,Code Snippets应用程序,RSS Feed阅读器以及大约30个小应用程序,所有应用程序都在一个应用程序中,每个应用程序都充当模块。

我的问题是关于表现。有了这么多模型和控制器等被加载,我不能指望在这个应用程序的大用户群上有良好的性能吗?

我意识到有太多因素未知,如服务器设置和更多,但更多,所以我问的是像模型和东西都加载到应用程序初始化或仅在需要时?很多时候,大多数应用程序/模块都不会在请求中使用。

我看到一些添加模块的软件包,模块可以获得自己的控制器,模型,路由,视图以及您在每个模块的App文件夹中看到的所有内容。但是我不确定我是否想要走那条路,所以我现在可以像往常一样在主应用程序下使用它。

1 个答案:

答案 0 :(得分:1)

简单的答案是肯定的,应用程序只加载您为给定请求使用的模型/控制器,而不是,您赢得的模型和控制器(包括包和模块中的模型/控制器)的数量/大小#39; t会对您应用的效果产生负面影响。

更复杂的答案是,一如既往,这取决于您编写代码的方式;模型为某些业务逻辑调用其他模型,或者在没有缓存的情况下急切加载几个关系数据,或者在每个控制器中使用荒谬的依赖注入...但是所有这些都是非常糟糕的应用程序设计无论如何,并不是特定于Laravel。

但根据我的经验,您对性能的影响最大的是Eloquent代码,它试图过于花哨或低效地从数据库中获取数据。查看文档以了解避免这种情况的方法:

https://laravel.com/docs/5.3/eloquent-relationships#eager-loading