文档结构  
翻译进度:已翻译     翻译赏金:10 元 (?)    ¥ 我要打赏

Laravel自2011年首次发布以来发展迅猛,目前它被认为是2017年最好的PHP开发框架。从复杂的API函数到简单的Web应用程序,Laravel一应俱全,能为您的企业提供一站式的PHP开发平台。该框架提供了一整套函数库和架构,可以让您轻松创建令人惊叹的网站,且系统结构合理、代码漂亮。然而开发者要构建这样的应用程序,还需要了解发挥这个框架能力的一些技巧,技巧可以从推特上获取,这样做可以提高开发效率。

从我们最后的一篇博客往前查找,你会找到之前讨论的一个话题“为什么Laravel是最棒的”,现在我们要探讨的是Laravel开发者应该知道的七个性能优化点。下面就看看我们在ValueCoders上研究之后发现了什么。

 

第 1 段(可获 1.66 积分)

1. 增强 Artisan 命令

Laravel有一个非常有用且独特的工具叫 Artisan命令,该命令对提高性能非常有帮助。 下面是这个工具通常的创建过程:

Artician code 1

这个命令非常有用,尤其当Laravel开发者正在创建很多路由和配置时,他只需申请一块缓存并生成存储这些信息的数组即可,Laravel加载时因为加载的是缓存而非真实的对象,所以速度更快。

但是当开发者更改了配置或者路由文件时不要忘记重新运行这条命令,否则,Laravel因为已经加载了缓存内容而无法处理你的更改。

第 2 段(可获 1.31 积分)

我们还可以缓存用户数据、设置信息和位置信息。这同时也限制了SQL查询语句的数量。请确保更改这些缓存数据的同时清除该缓存。还要确保数据库索引能有效指向数据库缓存,那里有配置、路由和视图信息。还要把这些命令添加到Forge部署脚本中。

Artician code

建议安装/创建 PHP OPcache缓存。OPcache可以缓存PHP代码,以减少重新编译的麻烦。

2. 删除未使用的服务

不需要加载所有服务的时候,最好从配置文件中去掉那些未使用的服务。建议在config/app.php文件中增加一句注释给未使用服务的提供商参考。不过请确保注释掉这些未使用的服务之后,程序的所有功能未受影响。

第 3 段(可获 1.46 积分)

3. 尽量少用Laravel组件

各种各样的Laravel插件可以让你轻松地为程序添加功能。随着功能的增加,程序需要加载更多的库和文件,这会减慢程序的运行速度。 通过config/app.php 文件可以查看加载了哪些提供商,你可以通过去掉没有必要的提供商来减少加载。 此外,Laravel 用组合器(Composer)管理组件 , 因此删减composer.json 文件 还可以减少依赖关系的加载。

4. 分析查询过程

如果你使用Eloquent 对象执行查询时很好奇幕后到底发生了什么,那么你可以通过装一个分析器(profiler)包来查看过程。还可以使用这个网址: https://github.com/loic-sharma/profiler, 这里是Laravel 3 分析器的一个端口, 或者使用这个网址:https://github.com/barryvdh/laravel-debugbar, 这里集成了通用的PHP Debug Bar 包.包安装后,每一个视图底部会增加一个工具栏,  里面显示当前页面涉及的SQL查询情况和该应用请求的内存量。当你用本地开发数据库的小数据量进行开发时,这个分析器是识别代码潜在瓶颈的最好方式。

第 4 段(可获 2.56 积分)

5. 采用 “立即加载”方式处理数据

用Eloquent ORM,Laravel 可以很容易地把对象模型映射到数据库的表上。通过几个简单的文件就可以映射出对象的结构关系,而且Eloquent 会处理好所有的相关数据库交互操作(创建、检索、更新、删除)。Eloquent 的这种做法叫“延迟加载”。

那意味着对于任何相关数据,比如一本书作者的详细资料,Eloquent 不会真的去检索出数据,除非代码里的其他地方特别引用了这些数据。当你采用了这种“延迟加载”的方式,有一两个额外的查询出现在你的详细信息页面上看上去也无关紧要,但是当你对藏书进行一个类似的查询并等待数据返回时,这种查询会导致大量查询的执行,从而降低查询效率。

 

第 5 段(可获 1.76 积分)

相反的,如果你设置你的查询使用 “立即加载” ,也就是说在第一次查询的时候它就会检索回所有相关对象。这样他们就可以立即使用了,比如:

Laravel performance

延迟加载查询就变成了…

Laravel developer

...立即加载查询.

6. 资源预编译

在开发过程中,资源内容存在于独立文件中(比如路由和配置文件)使代码便于维护。在生产环境中,这就没有必要了。为了更好的服务于此,在部署你的网站的时候,你可以运行几个Laravel artisan命令:

第 6 段(可获 1.19 积分)

Laravel developers 1

这些命令将常用的类编译成一个文件,以便快速引用。同时还把配置文件和路由信息分别合并到单个文件中,以便快速加载。你还可以将自己的类添加到这个优化中,默认情况下不会添加自己创建的类。这个优化对于不同的系统的性能提升可能会不尽相同,但每一点提升对系统都是有帮助的。

7. JIT编译器

计算机不能直接解析 PHP 语言.你也不能把PHP编译成字节码让计算机运行. 必须要通过中间人, 比如Zend引擎,它解析PHP文件成C程序并运行. 你可能也会猜到,这个做法速度会很慢. 每当你的服务器运行一个PHP文件时,必须要先把这个文件转换成令牌---AST解析器做完这个后再解析该文件。更糟的是,每次这个文件都要被编译一次,尽管编译结果都是一样的。

第 7 段(可获 1.84 积分)

要想程序运行快,你必须得采用一次编译,多次运行的方式,这就是JIT编译器的工作模式。

Laravel使用的JIT编译器是HHVM,这个编译器由Facebook开发并被其广泛使用。Wikipedia、 Etsy等成千上万的公司也都在使用这个编译器。

到此,你已经了解了如何提升Laravel开发网站的效率。然而真正做到效率提升,还需要你具备大量的技术知识和大量的时间投入。

第 8 段(可获 1.1 积分)

文章评论

南京访客
感谢分享!已推荐到《开发者头条》:https://toutiao.io/posts/vtw4j0 欢迎点赞支持!
欢迎订阅《不错的好文》https://toutiao.io/subjects/5551