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 数据库连接。

相关推荐
不正经的小寒7 小时前
PHP 8.4 核心特性
php
不正经的小寒9 小时前
PHP 8.3 核心特性
php
安妮的小熊呢12 小时前
CRMEB开源商城系统 & 标准版系统(PHP)开发规范
开发语言·javascript·php
在角落发呆12 小时前
跨越网络鸿沟:传统文件传输与现代内网穿透的奇妙交响
开发语言·php
minji...15 小时前
Linux 网络基础之网络IP层(十)IP 协议,网段划分,IP地址相关问题
linux·运维·服务器·网络·tcp/ip·智能路由器·php
枫叶林FYL16 小时前
【强化学习】2 大规模并行强化学习中的耦合策略优化:受控多样性驱动的样本高效探索
开发语言·php
zb2006412016 小时前
Laravel 8.x新特性全解析
php·laravel
code monkey.16 小时前
【Linux之旅】Linux 网络基础全解析:从协议分层到 Socket 编程,构建高性能网络服务的底层基石
linux·网络·php
我命由我1234516 小时前
PHP - PHP 基本随机数生成函数
开发语言·ide·后端·java-ee·php·intellij-idea·intellij idea
我命由我1234517 小时前
PHP - PHP 简易 Web 服务器、基础接口开发
服务器·开发语言·前端·php·intellij-idea·idea·intellij idea