Laravel项目的性能优化

Laravel项目的性能优化众所周知Laravel框架的功能很强大,它里面的东西也很多,即便如此它仍然是一个优秀的框架,但在生产环境下要做好优化提升网站的打开速度。所以,接下来的这篇文章给大家分享了几个Laravel网站性能优化的技巧。优化一:关闭debug打开.env文件,把debug设置为false。APP_ENV=localAPP_DEBUG=falseAPP_KEY=base64:sT/aTFeaE13…

大家好,又见面了,我是你们的朋友全栈君。

众所周知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 服务器上,比如七牛等

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/146131.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • bat批量修改文件名_bat批量修改文件夹名称不成功

    bat批量修改文件名_bat批量修改文件夹名称不成功在测试的时候,经常会遇到修改host的情况,每次都打开host手动添加,很繁琐地,怎么写个批处理文件,双击下就把host修改了呢,请看下面代码:@echooffcolor0F@attrib-r”%windir%\system32\drivers\

  • 程序员需要什么条件_大厂程序员啥意思

    程序员需要什么条件_大厂程序员啥意思从参加工作到现在,短短的几年内,我投资在自己身上的钱已超过三十多万,光买书籍的钱就已超过总投资的三分之一,买了不少于上千本书,有实体书,也有电子书。这些书不仅提升了我的技术能力,更提升了我的视野和认知。

  • Zigbee协议栈ZStack构架

    Zigbee协议栈ZStack构架协议栈版本信息:ZigBee2006\ZStack-1.4.3-1.2.11、ZStack协议栈构架  Zigbee协议栈就是将各个层定义的协议都集合在一起,以函数的形式实现,并给用户提供一些应用层API,供用户调用。协议栈体系分层架构与协议栈代码文件夹对应表如下:   整个协议栈的构架,如图所示APP:应用层目录,这是用户创建各种不同工程的区域,在这个目录

  • 白话空间统计番外:再谈莫兰指数(Moran’s I)

    白话空间统计番外:再谈莫兰指数(Moran’s I)经典相关性分析是两条数据(属性维度)之间的相互依赖关系,那么空间自相关就是在空间范围内的相互依赖程度。全局的莫兰指数就是用来衡量空间自相关程度的。在ArcGIS的工具集里面,这个工具干脆就直接叫做“空间自相关”(SpatialAutocorrelation(GlobalMoran’sI))。

  • python实现火车票查询「建议收藏」

    python实现火车票查询「建议收藏」1.知识点: Python基础知识的综合运用 docopt,requests,colorama,prettytable库的使用2requests:使用Python访问HTTP资源的必备库            prettytable:可以将打印内容格式化为像MySQL一样的输出      docopt:命令行参数解析工具               …

  • 零拷贝技术_基因单拷贝

    零拷贝技术_基因单拷贝零拷贝技术概述零拷贝技术指在计算机执行操作时,CPU不需要先将数据从一个内存区域复制到另一个内存区域,从而可以减少上下文切换以及CPU的拷贝时间。它的作用是在数据报从网络设备到用户程序空间传递的过程中,减少数据拷贝次数,减少系统调用,实现CPU的零参与,彻底消除CPU的负载。实现零拷贝用到的主要技术是DMA数据传输技术和内存区域映射技术零拷贝机制可以减少数据在内核缓冲区和用户进程缓冲区之间反复的I/O拷贝操作零拷贝机制可以减少用户进程地址空间之间因为上下文切换而带来的CPU开销物理内存和虚拟

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号