Laravel项目的性能优化

众所周知Laravel框架的功能很强大,它里面的东西也很多,即便如此它仍然是一个优秀的框架,但在生产环境下要做好优化提升网站的打开速度。所以,接下来的这篇文章给大家分享了几个Laravel网站性能优化的技巧。

优化一:关闭debug

打开.env文件,把debug设置为false。

APP_ENV=local

APP_DEBUG=false

APP_KEY=base64:sT/aTFeaE13eyao1Raee6jC9Ff+Yle1SE+wtyk0H6B4=

优化二:缓存路由和配置

每次服务器执行请求时,都会注册所有的路由,这会花费一些时间。但是,你可以选择缓存路由列表来跳过这个步骤。
缓存路由列表是非常简单的。你需要做的是在部署应用程序后,执行下面的这个命令:

php artisan route:cache

但是,如果你添加或修改了任意一个路由信息,请不要忘记清除之前的缓存以及重新执行缓存命令。

php artisan route:clear
php artisan route:cache

注意,这只对控制器类路由有效。
缓存配置
就如路由一样,你同样可以在应用中缓存配置文件。
设想一下这种场景:每次你发送一个请求到 App 中,Laravel 都需要去加载不同的配置文件,并且要去打开*.env* 文件读取其中的内容。这种方式性能低下,是不?
不过不用担心,这里有个 Artisan 命令专治这个。

php artisan config:cache

你在部署之后可以使用它。和路由差不多,别忘了编辑东西的时候清理一下缓存。

php artisan config:clear
php artisan config:cache

优化三:composer优化

sudo composer dump-autoload optimize

优化四:laravel 提升性能命令

php artisan optimize

优化五:使用性能更好的Cache和Session驱动

Laravel默认是有缓存的,当你新建一个 Laravel 项目的时候Cache 和 Sessions 的驱动默认为 「文件」。在本地开发环境和小项目中它没啥问题,但是项目增长时,就显得不够用了。
所以,考虑下换个更好的驱动例如 Redis。 Laravel 有内置支持它的方式,而你要做的就是 安装 Predis。

优化五:使用队列

有些时候,Laravel 比预期慢,这时你可以考虑异步执行任务。
最常见的情况就是发送一封欢迎邮件,让我们一起看看任务流程。

用户填写我们的表单;
将他/她的详细信息写入数据库;
发送一封写有欢迎语和确认链接的邮件给他/她;
并展示感谢页面;

很多时候,这些任务完全是在控制器中并且按照顺序执行。
我的建议是学会如何使用事件和队列,可以将发送邮件任务交给专门的流程,以致于改善用户使用体验。
我上篇文章专门讲了laravel队列的使用,有兴趣的可以去看一下Laravel队列的使用。

优化六:删除未使用的服务

Laravel 自带了很多服务,它是一个全栈框架,每一个服务都有其用武之地。
所以,请花一些时间检查 *config/app.php * 文件,看看你是否能找到一个你不需要的服务。如果一切正常,请尝试将其删除并测试您的应用程序。
它应该有所帮助(一点点)!

优化七: 使用预加载进行查询

如果你知道 Laravel 是什么,你可能也知道预加载是什么。 如果您信息不够及时,预加载是一种通过使用特定语法来减少发送到数据库的查询数量来提高 Eloquent 性能的方法。
更改基础查询以避免此性能问题。 您将只执行两个查询而不是1001! 这是巨大的性能提升。

优化八:缓存查询结果

有时候, 缓存一个具体的查询结果可能是一个好主意。
想象这样一个场景:你准备在你的应用主页上展示 排行榜。 这项工作是通过从数据库中执行查询完成的(查询可能涉及到artists表以及其他的一些表)。 你的主页访问量是 1000 次/小时 。
如果这个排行榜数据的查询次数是 1000次每小时,那么一天下来执行的查询次数就是24000次。
现在,让我们假设这个排行榜是每小时更新一次 。那么,将每次的查询结果缓存一小时如何 ?
这个缓存组件的 * remember* 方法在未找到缓存的情况下将会先从数据库中获取数据,并缓存60分钟。到期后,将会再次从数据库中获取最新的数据,更新缓存。
查询次数 从 24000 到 24 次/天 。

优化九: 数据表要建立索引

记住,必要的时候请为您的数据表建立索引。 这看起来像是个没什么卵用的提示,但实际上这很有必要。 因为我见过非常多的应用,它们的数据表没有索引。
实现起来很简单,您可以创建一个新的数据库迁移并使用里面的方法来添加索引.
当然,索引不是您喜欢在哪建就直接创建一个就是了。您必须研究您的业务、代码和查询,去分析哪里才是最需要索引的地方,然后再建立索引。

优化十:去除没必要的中间件

Laravel 会对你注册的中间件进行大量的(前/后)调用。所以,请你仔细检查它们,并且去掉那些你不需要的中间件。
通常中间件列表在 *Kernel.php *。

优化十一:使用更高版本的php并开启OpCacahe

这不仅仅是针对Laravel网站的性能优化方法,其中很多也是通用的网站性能优化的方法;

优化十二:使用CDN

肯定会有很多前端的资源,比如 CSS 文件和 JS 脚本。
你可以通过多种方式来减少发送给用户的数据量:

  1. 压缩静态资源;
  2. 捆绑静态资源(将多个 CSS 文件或者 JS 脚本合并为一个,以减少请求次数);
  3. 开启 gzip 压缩;

然而,如果你遇到大量的流量,我建议你可以将你的静态资源托管到专用的 CDN 服务器上,比如七牛等

你可能感兴趣的:(网站架构,框架分析,技术文章)