ZsAdmin V1.3.26 更新日志,提升性能与访问速度优化
更新日志
本文件记录 ZsAdmin「智数」后台开发框架的主要变更。
2026-10-28 — 性能与访问速度优化
本次更新围绕「后台响应更快、数据库查询更少、前端资源加载更轻」进行优化,
不改变原有业务功能;对已有数据库提供自动回退,升级安全无侵入。
新增
批量权限解析 CommunityPerm::mapForUserIds():一次性查询并在内存中计算多个用户的社区角色与权限,供后台用户列表使用。内联流式文件响应 app\response\InlineFile:插件/主题图片通过readfile流式输出,不再整文件载入内存。- 维护命令注册:启用
php think user:cancel-purge(到期注销清理)与php think backup:run(定时备份),可配置系统计划任务调用。 - 数据库索引:安装脚本为
user、attachment、admin_log等表补充常用查询索引,并新增基于 ngram 的全文索引。
优化(性能)
- 消除用户列表 N+1 查询:后台用户列表改为批量解析权限,冷缓存场景下由「每用户一次查询」降为「一次批量查询」。
- 欢迎页缓存:管理员/用户/今日新增等统计计数缓存 60 秒;可能阻塞的 DNS(
gethostbyname)探测结果缓存 5 分钟。 - 图表懒加载:约 527KB 的 ApexCharts 改为运行时动态加载,不再阻塞页面解析与首屏渲染。
- 插件资源协商缓存:插件图标/预览图支持
ETag、Last-Modified,命中时返回304 Not Modified,并补充immutable与X-Content-Type-Options: nosniff。 - 关键词全文检索:用户关键词搜索在存在 ngram FULLTEXT 索引且关键词不少于 2 字时走布尔全文检索;无索引或短词时自动回退原 LIKE 模糊匹配,旧库行为不变。
- 日志治理:日志文件最多保留 30 个,
error/emergency/alert级别独立成文件,避免长期运行日志无限膨胀。
变更
- 请求路径瘦身:后台用户列表不再在请求中顺带执行到期注销清理,该职责移交计划任务命令。
- Cookie 安全联动:Cookie 的
secure改为环境变量优先,未显式配置时在 HTTPS 请求下自动启用,HTTP 下保持关闭。
升级注意
database/install.sql的索引变更仅影响新安装。已有数据库需手动执行索引迁移(大表建议低峰或使用在线 DDL)。- 全文检索需 MySQL 5.7.6+,并使用 ngram 解析器;未建立全文索引时系统自动使用原搜索方式,无需强制升级。
- 建议上线后将
php think user:cancel-purge配置为每天执行的计划任务。
手动执行以下sql命令(新装不需要执行):
ALTER TABLE `zs_user`
ADD INDEX `idx_status` (`status`),
ADD INDEX `idx_login_time` (`login_time`),
ADD INDEX `idx_create_time` (`create_time`),
ADD INDEX `idx_delete_time` (`delete_time`),
ADD FULLTEXT KEY `ft_user_search` (`username`,`nickname`,`email`,`mobile`) WITH PARSER ngram;
ALTER TABLE `zs_attachment`
ADD INDEX `idx_storage` (`storage`),
ADD INDEX `idx_create_time` (`create_time`),
ADD INDEX `idx_delete_time` (`delete_time`);
ALTER TABLE `zs_admin_log`
ADD INDEX `idx_module_status_time` (`module`,`status`,`create_time`);全文索引需 MySQL 5.7.6+。上线后建议把`user:cancel-purge` 配成宝塔计划任务(每天 1 次)。
执行命令的时候将zs_ 修改为自己设置的数据表前缀~
帖内红包
最新打赏







QQ官方交流群