5.7 KiB
交付前最终验收记录 — 批次 C+F(图片压缩 / 全量验收 / 重建交付包)
日期:2026-08-19 | 环境:.test-env SQLite 测试站(http://127.0.0.1:8090,PHP 内置服务器)| 结论:全部通过,可交付
Part C — 图片压缩 + 清库重播
C1 压缩统计(GD 原地重编码,.test-env/compress.php,不入库)
| 指标 | 数值 |
|---|---|
| 扫描(jpg+png) | 127 |
| 处理成功 | 47(jpg 46 + png 1) |
| 跳过 <100KB / logo.png / 小 png | 65 / 1 / 14 |
| 失败 / 压缩后反而变大回退 | 0 / 0 |
| 处理文件合计 | 20.83 MB → 4.18 MB(20.1%) |
| 主题 image/ 目录总大小 | 27.30 MB → 11.43 MB(-58%) |
参数:jpg >1920w 等比缩 + imagejpeg q78;png >1600w 等比缩 + imagepng 6;全部临时文件写入后原子替换,校验输出有效性。
达标抽检:home/banner.jpg 908KB → 94.5KB(预期 <250KB ✓);news/* 230–692KB → 34–125KB。
偏差项:home/global-map.png 1.43MB → 1.28MB(仅 -8.8%,未达 <400KB 预期)。该图 73% 全透明 + 27% 半透明(GP 页叠加层地图,必须保 alpha 的 PNG);调色板量化实测 PSNR 10.4dB 且 alpha 被破坏(GD 的 palette PNG 仅二元透明),弃用。GD 约束下已是最优,遗留项见文末。
C2 清库重播
| 步骤 | 结果 |
|---|---|
| 强删全部附件 | 96 个 |
| 清 uploads 年度目录(保留 hesu-backups/wpcf7_uploads) | ✓ |
delete_option(hesu_seeded) + 重播 |
✓ |
| news 数 | 4 ✓ |
| uploads 体积 | 124 MB → 17 MB(新压缩图侧载) |
| hesu-backups 保留 | ✓(最新 json:pages 9 / news 4 / menus 2) |
F1 — 审计修复项逐条验证(10/10 通过)
| # | 项 | 结果 | 实测 |
|---|---|---|---|
| 1 | H1 结构 | ✓ | news 详情 / about-us / news 列表页均 H1=1 |
| 2 | OG / JSON-LD | ✓ | 首页 og: 8 种(≥6)+ twitter:card=1;news 详情 ld+json 含 "@type":"Article";RSS feed og=0 |
| 3 | lazy / preload | ✓ | building-materials:lazy=11、hero fetchpriority="high"×1、srcset=2;首页 preload banner=1 |
| 4 | CF7 收缩 | ✓ | 首页 contact-form-7 引用=0;/contact/ 表单正常(wpcf7×13) |
| 5 | emoji | ✓ | 首页 wp-emoji=0 |
| 6 | 业务 JS | ✓ | 首页仅 main.js + building-materials.js |
| 7 | news-grid alt | ✓ | 4 卡 alt=News1–4 非空;唯一空 alt 为装饰性 nw-hero__bg(合规) |
| 8 | 文案 | ✓ | settings-page.php 含"删除并重建";readme 无"15 篇" |
| 9 | 备份 | ✓ | hesu-backups 最新 json pages=9(news=4, menus=2) |
| 10 | screenshot.png | ✓ | 主题根存在(1200×900) |
F2 — 全站回归(11 路由 + 交互抽查,全部通过)
路由 200:/、/about-us/、/contact/、/development-history/、/global-presence/、/global-logistics/、/after-sales/、/auto-export/、/building-materials/、/news/、/news/<slug>/ —— 11/11 ✓
结构抽查:bp-cap×4 + bp-cap__label×4 ✓|au-gps__card×4 ✓|ct-map__info×2 ✓|nd- 结构(nd-article/body/figure/title/meta/nav)✓|Completed Delivery×1 ✓
Playwright 交互(5/5):
| 交互 | 结果 |
|---|---|
| 首页 stats 滚动计数 | ✓ 服务端输出 15000,渲染为 15,000(toLocaleString 证明 count-up 执行),4/4 触发 |
| 首页 network 拖拽 | ✓ 真实鼠标拖拽 translateX(-1134px)→(-1481px),按卡片步长吸附,克隆 12 卡 |
| GP 翻屏 | ✓ 滚轮 y 0→900→1800(5 屏),侧导航高亮 Middle East→Africa 联动 |
| CF7 空提交红校验 | ✓ 表单 invalid、6 字段红 tip(rgb(229,72,77))+ 红色汇总提示 |
| 移动端抽屉(390×844) | ✓ 开:main-nav open + backdrop + body 锁滚 + aria-expanded=true;backdrop 点击关:全部复位 |
控制台:首页 / global-presence / contact 均 0 error、0 请求失败。
F3 — 重建 zip + 干净安装
| 项 | 结果 |
|---|---|
| zip 重建(tar -a,排除 .git) | 27 MB → 13.1 MB(13,084,014 字节,-52%) |
| 干净安装(删 SQLite + uploads/2026 → core install + siteurl 修正 → CF7 → permalink → zip 装入激活) | ✓ |
| 安装后验证 | 首页 200 / Four Core Businessesk=1 / news=4 / ct-map__info-title=1 / og=9 / lazy=6 ✓ |
| 侧载健康 | 96 附件、0 重复 src、uploads 17MB(≈压缩前 124MB 的 14%) |
| junction 恢复 | ✓(PowerShell New-Item Junction),恢复后首页 200 |
安装过程共跑 3 轮:#1、#3 完全干净;#2 出现图片双份侧载(96→163 附件,66 个重复 src),根因为 seed 守卫"入口检查 hesu_seeded / 末尾置位"无跨进程锁——当时一个遗留的空闲浏览器标签在 seed 的 ~40 秒窗口内并发请求触发了第二次播种。单请求激活路径(生产场景:管理员一次点击激活)不受影响,两轮干净验证一致。已列遗留加固项。
遗留项(不阻塞交付)
- seed 并发加固(建议下轮):
hesu_run_seed()入口守卫与update_option('hesu_seeded')之间无锁,激活播种窗口(~40s)内的并发请求会双份侧载图片。建议:入口先原子置位(如add_option幂等失败即退出)或加 transient 锁。生产单管理员激活流程不受影响。 - global-map.png:GD 约束下仅 -8.8%(1.28MB,1600w truecolor+alpha)。如需 <400KB,需 pngquant 式带 alpha 量化(外部工具)或转 WebP(需改引用与兼容策略),超出本轮 GD 原地压缩边界。
- screenshot.png(1.09MB,主题根):不在 image/ 压缩范围内;WP 会自动缩放展示,可下轮顺手压。
- 主题 image/ 内若干与静态站根目录同名但静态侧已删除的文件按约定全部保留,待下一轮静态→主题同步时统一处理。