优化服务器与Web服务器配置
net.core.somaxconn
(socket监听队列最大长度)、net.ipv4.tcp_max_syn_backlog
(半连接队列大小),优化net.core.netdev_max_backlog
(TCP套接字未关联队列上限),减少高并发下的连接拒绝问题。worker_processes
(设置为CPU核心数)、worker_connections
(每个进程的最大连接数)等参数,启用Gzip压缩(减少传输数据量);若使用Apache,需开启mod_rewrite
(支持Laravel路由重写)和mod_deflate
(压缩模块)。pm.max_children
(子进程数量,根据服务器内存计算)、pm.start_servers
(启动时的子进程数)、pm.min_spare_servers
(最小空闲进程数)等参数,避免进程频繁创建销毁的开销。PHP层面深度优化
php.ini
中设置opcache.enable=1
,调整opcache.memory_consumption
(缓存内存大小,如128MB)、opcache.max_accelerated_files
(缓存的文件数量,如4000个)、opcache.validate_timestamps=0
(生产环境关闭文件时间戳检查,减少IO)。memory_limit
(如512MB,避免过高消耗内存);禁用不必要的PHP扩展(如xdebug
,仅在调试时使用),减少内存占用。Laravel框架专项优化
php artisan config:cache
(缓存配置文件)、php artisan route:cache
(缓存路由定义)、php artisan view:cache
(缓存视图文件);对于动态数据,使用Cache::remember
方法(如Cache::remember('popular_products', 60, function () { return Product::popular()->get(); })
)缓存查询结果,设置合理的过期时间。id
、status
、created_at
)添加索引,避免全表扫描;使用Eloquent的with
方法(预加载)替代lazy loading
(延迟加载),解决N+1查询问题(如User::with('posts')->get()
);对于大量数据,使用paginate
(分页)或chunk
(分块)方法,减少单次查询的数据量。.env
中的QUEUE_CONNECTION=redis
(推荐使用Redis作为队列驱动),运行php artisan queue:work
启动队列处理器;对于生产环境,使用Laravel Horizon
管理Redis队列,实现队列监控、优先级设置和失败任务重试。foreach ($users as $user) { $orders = $user->orders()->get(); }
),改用whereIn
一次性查询;使用select
方法仅查询所需字段(如User::select('id', 'name')->get()
),减少数据传输量;延迟加载关联数据(如$user->load('posts')
),避免不必要的关联查询。前端资源与CDN优化
Laravel Mix
(基于Webpack)合并CSS、JavaScript文件,压缩图片(如使用imagemin
插件),减少文件体积;配置Nginx启用Gzip压缩(gzip on; gzip_types text/css application/javascript image/svg+xml;
),进一步减少传输数据量。public_path
指向CDN地址,或通过asset
函数自动拼接CDN URL(如asset('images/logo.png')
会自动指向CDN地址)。性能监控与持续优化
Laravel Debugbar
(开发环境)实时查看查询时间、内存占用、路由加载等信息;生产环境使用New Relic
、Datadog
或Laravel Telescope
监控应用性能,识别慢查询、高内存消耗的请求,及时针对性优化。