laravel框架优化

1.优化 Composer 自动加载

Laravel 项目依赖众多库,因此优化 Composer 的自动加载至关重要。通过调整 composer.json 文件,可以减少加载冗余。

生成 Composer 自动加载优化:composer dump-autoload --optimize

类映射(Classmap)优化:使用 --optimize-autoloader 参数来优化自动加载

剔除开发依赖:生产环境中进行部署时,使用 --no-dev 选项剔除开发 依赖 :

composer install --optimize-autoloader --no-dev

2. 使用缓存加速响应

Laravel 提供强大的缓存机制来减少数据库查询和复杂运算。

(1) 配置缓存 :开发时候建议勿用,一般在生产环境中使用

php artisan config:cache 配置缓存

使用上述命令缓存配置文件(.env 除外),把 config 文件夹里所有配置信息合并到一个文件里,减少运行时文件的载入数量:

php artisan config:clear 清除配置缓存

上面命令会把生成文件 bootstrap/cache/config.php,缓存配置文件删除

(2) 路由缓存 开发时候建议勿用,一般在生产环境中使用**)** :路由缓存可以有效的提高路由器的注册效率,在大型应用程序中效果越加明显

php artisan route:cache 路由缓存

以上命令会生成 bootstrap/cache/routes.php 文件,需要注意的是,路由缓存不支持路由匿名函数编写逻辑。

注意:路由缓存不会随着更新而自动重载,so开发时候建议勿用,一般在生产环境中使用,可以配合 Envoy 任务运行器 一起使用。

php artisan route:clear 清除路由缓存

此命令做的事情就是把 bootstrap/cache/routes.php 文件删除。

(3) 数据缓存

使用 Redis 或 Memcached 缓存频繁访问的数据:

Cache::remember('users', 3600, function () {

return User::all();

});

3. 数据库优化

(1)查询优化

避免 N+1 问题:使用 with() 预加载关联数据。

// 正确:预加载

foreach (User::with('posts')->get() as $user) {

echo $user->posts->count();

}

// 错误:N+1 查询

foreach (User::all() as $user) {

echo $user->posts->count();

}

(2)使用 select() 指定字段:减少不必要的数据加载。

User::select('name', 'email')->get();

(3)分块处理大数据集:避免内存溢出。

User::chunk(200, function ($users) {

foreach (users as user) { /* ... */ }

});

4.索引与迁移

为常用查询字段(如 WHERE、JOIN 条件)添加索引。

使用迁移时避免 down() 方法删除索引(生产环境可能需手动处理)。

5. 异步任务与队列

将耗时任务(如发送邮件、短信等)放入队列:

dispatch(new UserNotice(mobile,name));

Mail::to('user@example.com')->queue(new WelcomeEmail());

配置队列驱动为 Redis 或数据库,并监控队列工作进程:

php artisan queue:work --tries=3

高流量场景避免使用 database 会话驱动,改用 redis 或 memcached。

减少 Cookie 大小(避免在 Cookie 中存储会话数据)。

7. 监控与分析

使用 Telescope:调试和监控请求、查询、日志等。

bash

composer require laravel/telescope --dev

php artisan telescope:install

日志优化:使用 daily 或 syslog 驱动,避免日志文件过大。

8. 部署优化

OPcache:启用 PHP OPcache 加速脚本执行。

预编译类:生产环境运行 php artisan optimize(Laravel 5.6+ 已默认优化)。

水平扩展:通过负载均衡部署多实例,共享缓存和会话存储。

  1. 其他技巧

禁用调试模式:确保 .env 中 APP_DEBUG=false。

使用 CDN:加速静态资源加载。

数据库读写分离:配置 read 和 write 数据库连接。

相关推荐
挨踢攻城2 小时前
网络安全 | 如何防御勒索软件?
安全·web安全·网络安全·php·厦门微思网络·防疫勒索软件
低音钢琴2 小时前
【从零开始构建性能测试体系-08】如何诊断性能瓶颈:从服务器到数据库的全方位分析
服务器·数据库·php
laoma-cloud3 小时前
网络基础综合实验
网络·php
颜夕啊4 小时前
Windows系统php8.2.9 安装imagick扩展
php·1024程序员节
BingoGo8 小时前
PHP 异常处理全攻略 Try-Catch 从入门到精通完全指南
后端·php
JaguarJack11 小时前
PHP 异常处理全攻略 Try-Catch 从入门到精通完全指南
后端·php
心灵宝贝16 小时前
申威架构ky10安装php-7.2.10.rpm详细步骤(国产麒麟系统64位)
开发语言·php
YJlio19 小时前
Process Monitor 学习笔记(5.24):工具栏参考与高效快捷键指南
笔记·学习·php
stark张宇21 小时前
超越 Hello World:深入小程序 Hybrid 初衷、安全配置与上线全链路
nginx·微信小程序·php
Java陈序员21 小时前
免费开源!一款操作 MySQL 和 MariaDB 的 Web 界面工具!
mysql·docker·php·mariadb