0

0

Laravel8如何进行性能优化?优化技巧分享

青灯夜游

青灯夜游

发布时间:2022-10-08 18:23:43

|

2121人浏览过

|

来源于learnku

转载

Laravel8如何进行性能优化?优化技巧分享

本指南列出了从快速优化到深度调优的各种性能优化技巧,这些技巧可以帮助构建高性能的 Laravel 应用。

Enlightn 上有不少同学在帮助我们编写了本指南。如果你正在寻求 Laravel 的自动化性能或安全工具,不妨可以访问这个网站看看。

为什么要提高性能?

毫无疑问,相比加载速度慢的应用程序,用户更喜欢速度更快的应用。

根据谷歌的一项研究,加载时间超过3秒的网站,在移动端会有 53% 的用户流失(选择离开)。而移动网站的平均加载时间约为 15 秒。这就是性能的重要性!

应用每增加一秒的加载时间,客户转化率就会越低。幸运的是,对于 Laravel 应用来说,这并不是一个很难解决的问题。

1. 使用内置性能能力快速获胜

Laravel 内置了一些性能提升功能,简单配置一下即可使用。

最关键的性能提升是 路由缓存 。你是否知道每次启动 Laravel 应用时,都会执行确定中间件、解析别名、解析路由组并指定路由控制器操作和处理请求参数?

可以使用 Artisan 命令 route:cache 来缓存所有必需的路由信息,从而跳过路由处理:

php artisan route:cache

这条命令可以给你带来 5 倍的性能提升!是最简单也是最有效的优化。

除了路由缓存,Laravel 还提供以下内容:

  • 配置缓存 在每次应用启动时跳过 .envconfig 文件的解析。
  • 视图缓存 预编译你的 Blade 模板视图。
  • 事件缓存 缓存应用程序所有事件和监听器清单。

提示:你应该确保将上述缓存命令添加到部署脚本中,以便每次部署时都重新缓存。否则,路由或配置文件的任何更改都不会在应用中体现。

2. 优化 Composer

Laravel 开发者常犯的一个错误是在生产模式下安装所有依赖项。一些开发包(例如 Ignition)会在内存中记录查询、日志和转储,从而提供带有上下文的友好错误消息,简化调试过程。尽管这在开发中很有用,但会减慢生产环境中应用程序的速度。

在部署脚本中,使用 Composer 安装拓展包的同时请务必使用 -no-dev 选项:

composer install --prefer-dist --no-dev -o

此外,请确保如上所述在生产环境中使用 -o 选项。这可以让 Composer 可以通过生成「classmap」来优化自动加载器。

如果你的应用在运行时没有生成类,你可以选择使用 --classmap-authoritative 选项而不是 -o 选项进行进一步优化。请务必查看 Autoloader 的 Composer 文档 优化策略.

3. 选择正确的驱动程序

选择正确的缓存、队列和会话驱动程序将会对应用程序性能产生极大影响。

对于生产环境中的缓存,推荐 Redis、Memcached 或 DynamoDB 等内存缓存驱动程序。你可以考虑将本地文件系统缓存用于单服务器设置,尽管这将比缓存到内存的选项慢。

对于队列,推荐使用 Redis、SQS 或 Beanstalkd 驱动程序。数据库队列驱动不适用于生产环境,并且已知可能会存在死锁问题。

对于 Session,推荐数据库、Redis、Memcached 或 DynamoDB 驱动程序。Cookie 驱动程序具有文件大小和安全限制,不建议用于生产环境。

4. 将耗时的任务通过队列处理

在典型的 Web 请求过程中,可能会有一些特定任务需要很长时间才能执行完成。Laravel 拥有一流的 队列系统,这可以让我们将耗时的任务转移到队列的任务中,从而让你的应用程序能够以极快的速度响应请求。

一般情况下,这类任务的常见示例包括解析和存储 CSV 文件、与第三方 API 交互、向用户发送通知、存在较长耗时的数据库查询和搜索索引更新。

5. 文本文件设置 HTTP 压缩标头

压缩标头会对应用程序性能产生重大影响。确保你在 Web 服务器上为文本格式文件(如 CSS、JS、XML 或 JSON)启用压缩或 CDN。

天工大模型
天工大模型

中国首个对标ChatGPT的双千亿级大语言模型

下载

图像格式已经有压缩算法的实现且大多数情况图像格式文件已经被压缩过,并且图像并不是文本格式文件(SVG格式除外,这是XML文档)。因此,图像格式不需要压缩。

你可以在 Web 服务器或 CDN 上设置 gzip 或 brotli(较旧的浏览器可能不支持 brotli),以获得较大的性能提升。

通常情况下,压缩可以将文件体积大小减少 80% 左右!

6. 在静态资源上设置 HTTP 缓存标头

缓存可以提高应用程序的性能,特别是对于静态资源,如图像、CSS 和 JS 文件。建议在 Web 服务器或CDN 级别启用缓存控制标头(如果适用的话)。如果你希望在 Larvel 应用程序而不是 WebServer上设置这些控制头,可以使用 Larvel 的 缓存控制中间件

Cache 消息头字段可以确保浏览器不会在多次访问网站时重复请求静态资源。这可以提高用户体验,因为网站在随后的访问时可以加载更快。

Laravel Mix 提供了开箱即用的缓存清理 功能,以便在更改 CSS 或 JS 代码时,浏览器不会继续使用旧的缓存内容。

7. 使用 CDN 服务加速静态资源

内容交付网络(CDN)是一个基于地理分布式的服务器组,通过使用距离网站访客更近的服务器来提供服务。可以让用户体验到更快的加载时间。

除了更快的加载速度和更短的加载时间外,CDN 还具有其他优点,如减少 Web 服务器负载,DDOS 保护和静态资源服务的分析等。

一些流行的 CDN 包括 CloudFlare、AWS CloudFront 和 Azure CDN。大多数 CDN 都有一定的免费试用额度。请考虑使用 CDN 来提升静态资源的加载性能。

Laravel 在框架中提供了开箱即用的 CDN 支持组件 Mix 和助手函数 路由缓存0。

8. 最小化 JS 和 CSS 代码

最小化脚本将会从你的应用程序中去除对执行不必要的额外代码(如代码注释、空格、缩短变量名以及其他优化)。这是一个在生产环境中减小 JS 和 CSS 文件大小常用且有效的手段。

Laravel Mix 为你的生产脚本提供了开箱即用的 路由缓存1 功能

9. 合理使用缓存

Laravel 内置了 路由缓存2 支持。缓存最适合用于读取繁重的工作负载。这些工作负载通常涉及耗时的数据检索或数据处理任务。

缓存的一些常见场景案例可能包括:

  • 缓存静态页面:缓存静态页面是一件轻而易举的事. Laravel 的官网使用 路由缓存3 的方式缓存每一个文档页面。
  • 片段或部分缓存:有时候,相比缓存整个页面,缓存页面片段可能更有用。例如,你可能希望缓存包含用户名和用户头像的页眉。你可以一次性缓存页面页眉片段,而不需要每次都从数据库中获取数据。
  • 查询缓存:如果你的应用程序频繁地查询数据库中很少更改的项,则查询缓存可能会很有用。例如,当你经营一家电商网站,你可能希望缓存商城主页上显示的项目分类,而不是在每次访问商城时从数据库中读取这些项目分类。

请记住,缓存对long tail(很少请求的项目)没有用处。相反,对于任何频繁进行的数据检索 (与数据更新相比),应谨慎使用它。

还必须确保每次缓存内容更改时都使缓存无效或刷新缓存。例如,如果您正在缓存配置文件头,则在用户更新其配置文件图片后刷新缓存。

10. 确定您的应用程序的性能瓶颈

如果您的某些页面加载时间较长或内存使用率较高,则可能需要确定性能瓶颈。Laravel 生态系统中有许多工具可以帮助您做到这一点,包括 Laravel Telescope、Laravel Debugbar 和 Clockwork 。

一些常见的性能瓶颈包括:

  • N+1个查询:如果您的代码为每个记录执行一个查询,将导致更多的网络往返和更多的查询。这可以在 Laravel 中使用 路由缓存4.
  • 重复请求:如果代码在处理同一请求时多次执行同一查询,则可能会减慢您的应用程序的运行速度。通常情况下,如果多个服务或类需要相同的数据集,则可以通过将数据计算或检索提取到单独的类来解决这些问题。
  • 高内存使用率:为了减少应用程序的内存使用量,可以考虑使用 路由缓存5 和 路由缓存6 来减少单次处理的数据体积。若要存储文件,请使用 路由缓存7 以减少内存使用。
  • 慢查询:如果查询执行时间过长,则应考虑使用查询缓存和/或使用 EXPLAIN 语句来优化查询执行计划。

如果无法使用上述调试工具确定应用程序中的性能瓶颈,则可以考虑使用 XDebug 或 Blackfire 等分析工具。

上线检测清单

另外这里有完整的上线检查清单可供参考 路由缓存8。

总结

性能优化是一个永恒的话题,但 Laravel 有几个内置组件,如 Mix、queues 和缓存,这使性能优化看起来很简单!我们希望你在提高应用程序性能方面学到一些新知识。

原文地址:https://laravel-news.com/performance-checklist译文地址:https://learnku.com/laravel/t/55702

【相关推荐:路由缓存9】

相关文章

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

38

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

83

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

97

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

223

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

458

2026.03.04

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

169

2026.03.04

Swift iOS架构设计与MVVM模式实战
Swift iOS架构设计与MVVM模式实战

本专题聚焦 Swift 在 iOS 应用架构设计中的实践,系统讲解 MVVM 模式的核心思想、数据绑定机制、模块拆分策略以及组件化开发方法。内容涵盖网络层封装、状态管理、依赖注入与性能优化技巧。通过完整项目案例,帮助开发者构建结构清晰、可维护性强的 iOS 应用架构体系。

246

2026.03.03

C++高性能网络编程与Reactor模型实践
C++高性能网络编程与Reactor模型实践

本专题围绕 C++ 在高性能网络服务开发中的应用展开,深入讲解 Socket 编程、多路复用机制、Reactor 模型设计原理以及线程池协作策略。内容涵盖 epoll 实现机制、内存管理优化、连接管理策略与高并发场景下的性能调优方法。通过构建高并发网络服务器实战案例,帮助开发者掌握 C++ 在底层系统与网络通信领域的核心技术。

34

2026.03.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Laravel---API接口
Laravel---API接口

共7课时 | 0.7万人学习

PHP自制框架
PHP自制框架

共8课时 | 0.6万人学习

PHP面向对象基础课程(更新中)
PHP面向对象基础课程(更新中)

共12课时 | 0.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号