逍遥图库系统逍遥图库系统
首页
  • 快速开始

    • 项目介绍
    • 安装指南
    • 快速开始
  • 深入了解

    • 配置说明
    • 部署指南
    • 安全配置
  • 用户系统
  • 图片管理
  • 相册管理
  • 互动功能
  • 管理后台
  • PWA 渐进式应用
  • API 概述
  • 认证接口
  • 图片接口
  • 相册接口
  • 用户接口
  • 管理接口
  • 主题系统
  • 性能优化
  • 常见问题
  • 更新日志
Gitee
首页
  • 快速开始

    • 项目介绍
    • 安装指南
    • 快速开始
  • 深入了解

    • 配置说明
    • 部署指南
    • 安全配置
  • 用户系统
  • 图片管理
  • 相册管理
  • 互动功能
  • 管理后台
  • PWA 渐进式应用
  • API 概述
  • 认证接口
  • 图片接口
  • 相册接口
  • 用户接口
  • 管理接口
  • 主题系统
  • 性能优化
  • 常见问题
  • 更新日志
Gitee
  • 高级主题

    • 主题系统
    • 性能优化
    • 自定义开发
    • 常见问题

性能优化

本指南介绍如何优化逍遥图库系统的性能。

性能指标

目标

  • 首屏加载:< 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:

  1. 配置 CDN 服务(阿里云、腾讯云等)
  2. 修改静态资源 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 检测:

  1. 打开 Chrome 开发者工具
  2. 选择 Lighthouse 标签
  3. 运行分析

数据库监控

监控慢查询和连接数。

应用监控

记录 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 压缩已开启
  • [ ] 静态资源缓存已配置
  • [ ] 数据库索引已优化
  • [ ] 队列已启动
  • [ ] 图片懒加载已启用
  • [ ] 缩略图已配置
在 Gitee 上编辑此页
Prev
主题系统
Next
自定义开发