Skip to content

perf(build): 预生成 .gz + graph-vendor 分包修复 + cluster_map papers_per_cluster + KaTeX CSS 异步 - #41

Merged
Color2333 merged 1 commit into
mainfrom
perf/pr1-build
Jul 17, 2026
Merged

Color2333 merged 1 commit into
mainfrom
perf/pr1-build

Conversation

@Color2333

Copy link
Copy Markdown
Owner

PR1 — 传输/构建优化(低风险高收益)

vite.config.ts

  • 装 vite-plugin-compression 预生成 .gz,让 nginx gzip_static on 生效(此前失效回退实时压缩,每请求 +50-100ms)
  • manualChunks 删死规则 @nivo/three;补全 graph-vendor 依赖链(react-force-graph-2d/react-kapsule/kapsule/canvas-color-tracker/accessor-fn/index-array-by/bezier-js/float-tooltip/@tweenjs/d3),修此前 force-graph 子串不匹配 react-force-graph-2d 导致图谱代码散落到默认 chunk 无法跨页缓存
  • 加 experimentalMinChunkSize: 40960 合并 <40KB 碎 chunk
  • chunkSizeWarningLimit 600→400

cluster_map 加 papers_per_cluster(消除 10× over-fetch)

  • similarity.py/facade.py/graph.py 加 papers_per_cluster=5 参数(此前硬编码每簇返回 50 篇,前端只用 5 篇)
  • api.ts clusterMap 拼 &papers_per_cluster=
  • 效果:单次 payload 省 ~90% 篇论文传输

index.html

  • KaTeX CSS 改异步加载(media=print + onload),非公式页首屏不再阻塞(~5KB gzip + 100-300ms RTT)

package.json

  • 移除冗余 @types/dompurify(dompurify 3.x 自带类型)

验证

  • typecheck + build 通过;23 个 .gz 生成;graph-vendor 单 chunk 182KB
  • 核实修正:react-pdf worker 已最优(lazy+条件渲染),不做;brotli 需换 nginx 镜像有兼容风险,不做改 gzip 预生成

…ster + KaTeX CSS 异步

PR1 — 传输/构建优化

vite.config.ts:
- 装 vite-plugin-compression 预生成 .gz,让 nginx gzip_static on 生效(此前失效回退实时压缩,每请求 +50-100ms)
- manualChunks 删死规则 @nivo/three;补全 graph-vendor 依赖链(react-force-graph-2d/react-kapsule/kapsule/canvas-color-tracker/accessor-fn/index-array-by/bezier-js/float-tooltip/@tweenjs/d3),修此前 force-graph 子串不匹配 react-force-graph-2d 导致图谱代码散落到默认 chunk 无法跨页缓存
- 加 experimentalMinChunkSize: 40960 合并 <40KB 碎 chunk(此前 9 个 <2KB 碎 chunk ~9 次额外 RTT)
- chunkSizeWarningLimit 600→400 暴露大 chunk 告警

cluster_map 加 papers_per_cluster 参数(消除 10× over-fetch):
- similarity.py cluster_map 签名加 papers_per_cluster=5,[:50] 改 [:papers_per_cluster]
- graph.py cluster_map 端点加 Query(default=5,ge=1,le=50),拼进 cache_key + 传入
- facade.py 转发加参数
- api.ts clusterMap(nClusters,limit,papersPerCluster=5) 拼 &papers_per_cluster=
- 效果:单次 payload 从 12簇×50篇 降到 12簇×5篇,省 ~90% 篇论文 id/title/title_zh 传输

index.html:
- KaTeX CSS 改异步加载(media=print + onload=this.media=all),非公式页首屏不再阻塞等跨域 CSS(~5KB gzip + 100-300ms RTT)
- 加 noscript 兜底

package.json:
- 移除冗余 @types/dompurify(dompurify 3.x 自带类型,误置 dependencies)
@github-actions

Copy link
Copy Markdown

🔍 OpenCode PR Review Required

这是一个受保护的分支,merge 前需要进行 code review。

请运行以下命令进行 OpenCode review:

/oc review https://github.com/Color2333/PaperMind/pull/$PR_NUM

或者在 PR 页面评论 /oc 来触发 OpenCode review。


This is an automated reminder from PR Review Gate.

@Color2333
Color2333 merged commit 652cc59 into main Jul 17, 2026
2 checks passed
@Color2333
Color2333 deleted the perf/pr1-build branch July 17, 2026 16:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant