性能优化
本指南介绍如何优化逍遥图库系统的性能。
性能指标
目标
- 首屏加载:< 2 秒
- API 响应:< 200ms
- 图片加载:懒加载优化
- Lighthouse 评分:> 90
PHP 优化
OPcache
必须开启,显著提升 PHP 执行性能。
; php.ini
opcache.enable = 1
opcache.memory_consumption = 128
opcache.max_accelerated_files = 10000
opcache.validate_timestamps = 0 ; 生产环境
JIT(PHP 8.0+)
opcache.jit_buffer_size = 100M
opcache.jit = 1255
内存限制
memory_limit = 256M
数据库优化
索引优化
确保常用查询字段有索引:
-- 检查索引
SHOW INDEX FROM photos;
-- 添加索引
ALTER TABLE photos ADD INDEX idx_user_id (user_id);
ALTER TABLE photos ADD INDEX idx_create_time (create_time);
查询缓存
; my.cnf
query_cache_type = 1
query_cache_size = 32M
连接池
使用持久连接:
// config/database.php
'break_reconnect' => true,
慢查询日志
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2
Redis 缓存
配置
// config/cache.php
return [
'default' => 'redis',
'stores' => [
'redis' => [
'type' => 'redis',
'host' => '127.0.0.1',
'port' => 6379,
'prefix' => 'zeaya_',
],
],
];
缓存策略
- 热门图片列表:缓存 10 分钟
- 用户信息:缓存 1 小时
- 系统配置:缓存 1 天
静态资源优化
Gzip 压缩
Nginx 配置:
gzip on;
gzip_min_length 1k;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/javascript;
浏览器缓存
location ~* \.(css|js|jpg|png|gif|ico|svg|woff|woff2)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
CDN 加速
将静态资源放到 CDN:
- 配置 CDN 服务(阿里云、腾讯云等)
- 修改静态资源 URL 前缀
图片优化
图片懒加载
系统已内置图片懒加载,提升 50-70% 加载速度。
缩略图
自动生成多种尺寸缩略图:
// config/upload.php
'thumb' => [
'small' => [100, 100],
'medium' => [300, 300],
'large' => [800, 800],
],
WebP 格式
使用 WebP 格式可减少 30% 体积:
// 转换为 WebP
$image->save($path, 'webp', 80);
图片压缩
上传时自动压缩:
'quality' => 85, // JPEG 质量
队列异步处理
适用场景
- 缩略图生成
- 邮件发送
- 通知推送
- 数据统计
启动队列
# 开发环境
php think queue:listen
# 生产环境(使用 Supervisor)
[program:zeaya-queue]
command=php /www/wwwroot/photo-gallery/think queue:listen
numprocs=2
autostart=true
autorestart=true
前端优化
代码分割
按需加载 JavaScript:
// 动态导入
const module = await import('./module.js');
预加载
<link rel="preload" href="/static/css/layout.css" as="style">
<link rel="preload" href="/static/js/app.js" as="script">
DNS 预解析
<link rel="dns-prefetch" href="//cdn.example.com">
监控与分析
性能监控
使用 Lighthouse 检测:
- 打开 Chrome 开发者工具
- 选择 Lighthouse 标签
- 运行分析
数据库监控
监控慢查询和连接数。
应用监控
记录 API 响应时间:
// 在中间件中记录
$start = microtime(true);
$response = $next($request);
$time = microtime(true) - $start;
Log::info("API: {$request->url()} - {$time}s");
服务器优化
内存
- 最低 1GB
- 推荐 2GB+
CPU
- 启用多进程处理
- PHP-FPM 进程数配置
磁盘
- 使用 SSD
- 定期清理日志和缓存
性能检查清单
- [ ] OPcache 已启用
- [ ] Redis 缓存已配置
- [ ] Gzip 压缩已开启
- [ ] 静态资源缓存已配置
- [ ] 数据库索引已优化
- [ ] 队列已启动
- [ ] 图片懒加载已启用
- [ ] 缩略图已配置
