fix: 扫描缓存与真实大小计算,解决页面加载慢与数据虚增

- scanner: 大小改为统计实际 .tgz 文件(兼容 {version}.tgz 与 {pkg}-{version}.tgz 命名),
  不再用 unpackedSize 兜底虚增数倍
- server: 扫描结果内存缓存(首次懒扫描,后续请求秒回),新增 POST /api/scan 手动重扫,
  /api/packages 返回 scannedAt 时间戳,clean/删版本后自动失效缓存
- 前端: 概览页新增「重新扫描」按钮 + 「基于 xxx 扫描」时间展示;Top30 在真实环境
  (无访问统计)降级为「缓存占用 Top 30」按大小排序
- compose: 数据卷改 named volume,修复非 root 容器 SQLITE_CANTOPEN
This commit is contained in:
陈银军
2026-09-19 17:57:58 +08:00
parent 72722ab6bf
commit f84f21574f
8 changed files with 147 additions and 41 deletions
+9 -15
View File
@@ -1,22 +1,16 @@
# Verdaccio 缓存可视化管理面板(§12.2 Docker 部署)
# 与 Verdaccio 同主机:storage 只读挂载,manager-data 读写(SQLite 数据)
# Verdaccio 已独立部署,此处仅运行面板:缓存目录只读挂载,manager-data 读写(SQLite 数据)
services:
verdaccio:
image: verdaccio/verdaccio
restart: unless-stopped
volumes:
- "./storage:/verdaccio/storage" # Verdaccio 读写缓存目录
verdaccio-manager:
build: ./
restart: unless-stopped
image: verdaccio-cache-manager:latest # 已导入的 amd64 镜像(docker load 后直接可用)
restart: always
environment:
- VERDACCIO_STORAGE=/verdaccio/storage # 只读扫描该目录
- VERDACCIO_STORAGE=/verdaccio/storage # 容器内路径,对应下方只读挂载的右侧
- PORT=3000
volumes:
- "./storage:/verdaccio/storage:ro" # 面板只读挂载
- "./manager-data:/app/data" # 读写:SQLite 数据
- "/volume2/docker/verdaccio_verdaccio-1/verdaccio_storage:/verdaccio/storage:ro" # Verdaccio 缓存目录(只读)
- "vcm-data:/app/data" # 读写:SQLite 数据(named volume,避免宿主目录权限问题)
ports:
- "3000:3000"
depends_on:
- verdaccio
- "42338:3000"
volumes:
vcm-data: