• 技术文章 >php框架 >Laravel

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

    青灯夜游青灯夜游2022-10-08 18:28:15转载641

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

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

    为什么要提高性能?

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

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

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

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

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

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

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

    php artisan route:cache

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

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

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

    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。

    图像格式已经有压缩算法的实现且大多数情况图像格式文件已经被压缩过,并且图像并不是文本格式文件(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 和助手函数 asset

    8. 最小化 JS 和 CSS 代码

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

    Laravel Mix 为你的生产脚本提供了开箱即用的 最小化输出 功能

    9. 合理使用缓存

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

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

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

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

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

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

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

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

    上线检测清单

    另外这里有完整的上线检查清单可供参考 41. 课程总结 |《LX3 Laravel 性能优化入门》

    总结

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

    原文地址:https://laravel-news.com/performance-checklist

    译文地址:https://learnku.com/laravel/t/55702

    【相关推荐:laravel视频教程

    以上就是Laravel8如何进行性能优化?优化技巧分享的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:learnku,如有侵犯,请联系admin@php.cn删除
    专题推荐:Laravel php
    上一篇:【整理分享】40 条实用的 Laravel 表单验证规则 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 聊聊Laravel中怎么使用枚举• 【整理分享】Laravel模型时间戳的8个使用小技巧• 聊聊怎么优化PHP和Laravel以提高Web应用的性能• 什么是魔术方法?如何在 Laravel 中使用• 如何快速上手 Laravel ?100 个实用小技巧分享
    1/1

    PHP中文网