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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 全012路规律_双元素集合怎么判断

    全012路规律_双元素集合怎么判断堆题目链接将一系列给定数字顺序插入一个初始为空的小顶堆H[]。随后判断一系列相关命题是否为真。命题分下列几种:x is the root:x是根结点;x and y are siblings:x和y是兄弟结点;x is the parent of y:x是y的父结点;x is a child of y:x是y的一个子结点。输入格式:每组测试第1行包含2个正整数N(≤ 1000)和M(≤ 20),分别是插入元素的个数、以及需要判断的命题数。下一行给出区间[−10000,10000]内的N个要被

    2022年8月8日
    2
  • 中科院计算机生物学,中科院计算生物学重点实验室揭牌[通俗易懂]

    中科院计算机生物学,中科院计算生物学重点实验室揭牌[通俗易懂]德国马普学会副主席HerbertJaeckle和中科院副院长李家洋共同为重点实验室揭牌3月29日下午,中科院计算生物学重点实验室在上海生科院计算生物学所正式揭牌。德国马普学会副主席HerbertJaeckle教授、德国马普学会分子植物生理所所长LotharWillmitzer教授、中科院副院长李家洋院士、中科院生命科学与生物技术局局长张知彬研究员、国际合作局局长吕永龙研究员,上海生科院副院长…

    2022年7月27日
    9
  • 20针JLINK与10针JTAG的连接方法「建议收藏」

    20针JLINK与10针JTAG的连接方法「建议收藏」三星S3C6410的底板Jtag接口是10针,而普通的Jlink的接口是20针。因此就需要接口转换:

    2022年5月10日
    38
  • ckfinder php,php,ckfinder_ckfinder mac下报错 linux正常,php,ckfinder – phpStudy

    ckfinder php,php,ckfinder_ckfinder mac下报错 linux正常,php,ckfinder – phpStudyckfindermac下报错linux正常Fatalerror:Uncaughtexception’CKSource\CKFinder\Exception\InvalidConfigException’withmessage’ThetemporaryfolderisnotwritableforCKFinder’in/Volumes/disk02/www/jiuy…

    2025年6月10日
    2
  • windows10虚拟机安装_虚拟机一键安装版

    windows10虚拟机安装_虚拟机一键安装版[XP虚拟机安装]VMware安装XP虚拟机下载VMware下载XPProfessional,我是在这个网站下的http://www.runker.net/windows-xp-sp3.html新建虚拟机,选择典型选择刚刚下载的XP镜像文件(这里用简易安装更方便,如果不用简易安装还需要进BIOS设置CD启动项啥的,安装过程也需要自己一步步操作,麻烦一些)点击下一步,要求填写秘钥,百度搜索秘钥填进去可以参考https://zhidao.baidu.com/question/45439092

    2022年8月16日
    3
  • python格式化转换_Python进制转换format格式化[通俗易懂]

    python格式化转换_Python进制转换format格式化[通俗易懂]>>>bin(13)’0b1101’十进制转成八进制和十六进制'{0:x}’.format(20)转换成十六进制'{0:o}’.format(20)转换成八进制进制转换的时候用{0:进制}八进制转为二进制:比如八进制数(37)8拆开373用二进制表示为117用二进制表示为111合起来即为1111…

    2022年5月19日
    63

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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