
Wiki.js 性能优化完全指南6 处配置改动改动就有感【免费下载链接】wiki-Wiki.js | Next Generation Open Source Wiki项目地址: https://gitcode.com/GitHub_Trending/wiki78/wiki-多人协作的 Wiki 上一个带几张图片的页面要转好几秒才打开编辑时保存也像在拖拽。这篇文章以 Wiki.js 为例走一遍 Wiki.js 性能优化先定位瓶颈再改 6 处配置最后验收结果典型首屏耗时可从约 3 秒降到 1.2 秒左右。第一步先定位瓶颈别急着改配置 慢在前端、接口还是数据库怎么判断打开浏览器按 F12看网络面板加载那个慢页面看瀑布图大量时间花在 .js、.css、图片上说明慢在资源传输某几个请求一般是 /api/ 或 /graphql/ 开头的地址特别慢说明要查后端和数据库。后端这边有个现成的开关在管理后台开发Dev Flags里打开 SQL Log对应配置中的flags.sqllog定义在server/app/data.yml。打开后服务端日志会打印每条 SQL 及耗时哪条查询反复超过 100ms它就是你要优化的对象。判断完之后把开关关掉——打印全部 SQL 是有性能开销的只适合排查时用。动手之前先留一份基准在服务器上跑一下top确认 CPU 或内存是不是已经顶格顺便记下你用的数据库引擎PostgreSQL 和 SQLite 的表现差异不小。最后记录两个基准数字首屏加载时间、最慢的接口耗时。后面验收就靠这两个数。定位完瓶颈下一步按慢在哪层挑对应章节下手即可。第二步低成本快赢 ⚡如何给静态资源开启 Gzip如果前面有 Nginx 反向代理加这几行即可gzip on; gzip_types text/css application/javascript image/svgxml; gzip_min_length 1024;大部分 JS、CSS 压缩后能降到原来的三分之一左右这是全文性价比最高的一处改动。如何给内存缓存加上过期时间Wiki.js 内置缓存基于 NodeCacheserver/core/cache.js里的初始化没设默认过期时间。给数据加个兜底过期可以避免脏数据module.exports { init() { return new NodeCache({ stdTTL: 300 }) } }参数 300 表示 300 秒。注意这个缓存是进程内的以后要多实例部署就得换成 Redis 这类共享存储。静态资源有没有版本号怎么确认这一项不用改代码dev/webpack/webpack.prod.js的构建配置已经把时间戳now变量拼进了输出文件名。部署后在浏览器里确认资源地址带?时间戳参数浏览器更新时才不会拿到旧文件。上面三处加起来最多花半小时。改完重启服务立刻能感觉到差别还不够顺滑再做深度调优。第三步深度调优 ️数据库连接池参数怎么调连接池由 Tarn.js 管理config.yml里有pool段样例文件config.sample.yml里 min 和 max 是注释状态取消注释并填值pool: min: 2 max: 10取值思路并发用户不多时 min 设 1~2 就够max 别设太高超过数据库 max_connections 反而更糟。改完重启服务生效。如何用 SQL 日志定位慢查询和第一步呼应打开 SQL Log复现一次慢操作对照日志找出耗时查询优化后把开关关掉。如果慢查询集中在大页面的目录树或搜索上优先考虑减少单页条目或给常用字段加索引。进程与内存怎么配用 PM2 托管 Node 进程同时把堆内存上限设到 2GBpm2 start server/index.js -- --max-old-space-size2048如果确实要起多个实例共用一个库记得把配置里的ha设为 true仅支持 PostgreSQL否则各实例的本地缓存会互相打架。第四步调完如何验收 ✅如何对比调优前后的数据用同一页面跑 Lighthouse 出报告对照两个数字首屏耗时从约 3 秒降到 1.2 秒左右是常见区间最慢接口耗时应比基准明显下降。再留 2~3 天观察期改了连接池和缓存过期时间后如果编辑页、管理后台没有报错这次改动才算真正完成。拿走就能做的清单记录两个基准首屏耗时、最慢接口耗时反向代理层开启 Gzip并确认资源 URL 带版本号给server/core/cache.js加 stdTTL在config.yml里填上 pool 参数打开 SQL Log 找出至少一条慢查询优化后关闭任何大改动前备份config.yml和数据库配置项不确定时对照config.sample.yml里的注释【免费下载链接】wiki-Wiki.js | Next Generation Open Source Wiki项目地址: https://gitcode.com/GitHub_Trending/wiki78/wiki-创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考