47 lines
4.2 KiB
Markdown
47 lines
4.2 KiB
Markdown
# 登录反馈与加载优化(2026-10-12)
|
|
|
|
## 体验变化
|
|
|
|
- 显式本机登录、微信授权成功且会话确认后,显示「登录成功」弹框,说明登录方式和报告访问范围。
|
|
- 首页右上角和「我的报告」顶部显示「微信已登录」或「本机浏览器已登录」;标识可点击切换。依据服务端会话的 `user.kind`,不根据浏览器是否处于微信来猜测。
|
|
- 刷新后恢复有效会话不重复弹框。授权失败、Cookie 丢失不会显示成功;不合并账号、不删除缓存身份或历史报告。
|
|
- 弹框支持确认按钮、Esc、键盘焦点约束,关闭后恢复页面交互。
|
|
|
|
## 慢的原因与处理
|
|
|
|
优化前,在开发机浏览器对公网页面的一次无缓存测量:HTML 首字节约 244 ms,登录约 5510 ms 可操作;同步排在应用前的 face-api.js 853487 字节、下载约 4319 ms。两份完整字体分别 4858624 和 5034212 字节,下载约 14.5/15.6 秒。额外还预加载了已不使用的旧首页背景(约 590 KB)。认证状态接口独立 curl 测量约 431 ms,不能将本次首屏等待主要归因为微信接口;手机网络、DNS/TLS 和真实授权往返仍会影响实际时间。
|
|
|
|
处理:
|
|
|
|
1. 人脸引擎改为进入拍照、实际可用相机或系统相机降级时才请求;加载失败可重试,20 秒超时后保留手动兜底。模型/自动抓拍算法不变。
|
|
2. 登录、首页、报告列表使用系统字体;进入档案/拍照/报告时再注册原始 MiSans 字体。字体原文件保持不变。官方许可不允许改编或二次开发,因此没有对子集化作授权推断。[官方许可](https://hyperos.mi.com/font/zh/download/)。
|
|
3. 保留 PSD 原导出和 JPEG,新增 WebP 分发背景(同分辨率),移除旧背景预加载,优先加载登录背景。生成方式:`python tools/prepare_h5_assets.py`。
|
|
4. Node 静态资源增加 gzip 和 ETag/304,继续 `Cache-Control: no-cache` 及时校验新版本;仅压缩静态公共文本,不缓存/压缩账号、报告等私有 API 响应。未改 nginx 后台保护配置。
|
|
5. 微信登录去掉多余的配置查询往返,直接请求受协议及同源校验保护的授权接口;禁用环境仍由服务端明确拒绝。仅登录鉴权请求增加 12 秒超时,失败后不清除身份凭据;不缩短含照片报告的下载等待时间。
|
|
|
|
## 验证
|
|
|
|
```bash
|
|
H5_ARTIFACT_DIR=/tmp/juzi-login-20261012 node h5/test/login-performance.mjs
|
|
node h5/test/wechat-browser.mjs
|
|
node h5/test/accounts.js
|
|
node h5/test/report-persistence.mjs
|
|
node h5/test/recommendation.js
|
|
node h5/test/analyze-timeout.js
|
|
H5_ARTIFACT_DIR=/tmp/juzi-login-ui-20261012 node h5/test/ui-20261009.mjs
|
|
node h5/test/browser-failures.mjs
|
|
node h5/test/e2e-browser.mjs
|
|
```
|
|
|
|
隔离性能测试:150 ms 网络延迟、约 2 Mbps 下载、CPU 四倍降速,冷登录可操作约 1598 ms,静态资源编码后共 259547 字节;登录、首页不请求完整字体、人脸引擎或模型。另验证 gzip 解码一致、304、拒绝 `gzip;q=0`、私有 API `no-store`、超时保留身份、320/375/390/480 宽度标识不遮挡文案。拍照时引擎失败重试后,真实模型能返回 68 点人脸特征。
|
|
|
|
以上是可重复的开发机模拟结果,不等于每部手机的耗时保证,也不能直接与未限速的公网测量作同条件性能比例比较。测试不调用收费 Face++。
|
|
|
|
## 公网部署后复测
|
|
|
|
代码 `d2931a4` 已在本机和生产同步,生产 `juzi-h5` 与 nginx 均正常。部署前确认近 180 秒无进行中的检测;仅更新跟踪代码,未迁移、清理或覆盖 `h5/data`,没有改变微信凭据或域名设置。
|
|
|
|
同一开发机、无浏览器缓存的公网复测:HTML 首字节约 222 ms,登录可操作约 311 ms,资源编码后共 259678 字节;未请求完整字体或人脸引擎。随后刷新页面,资源网络传输约 7523 字节(其余走校验缓存)。这是一次观测值,不能保证所有手机达到该时间。
|
|
|
|
线上 gzip 与 ETag/304 已验证;健康、登录配置接口正常,匿名报告与后台均拒绝访问,私有数据目录不可公开读取。复测只读,不创建生产测试账号、报告,也不发起新的微信授权或收费检测。
|