Repository navigation
perf(website): 图片管线 + 收尾 SEO/GEO 技术项 - #25
Merged
Merged
Conversation
public/ 是 Vite 的静态目录,会被整份复制进 dist/,而 tauri.conf.json 的 frontendDist 就是 ../dist —— 所以那 1.9MB 营销截图一直在被打进桌面应用安装 包,而应用代码里一处都没引用它们(grep 过)。官网首页写着「安装包不到 5 MB」, 其中约 38% 是这份从不使用的资源。 - git mv public/screenshots/*.png → screenshots/(仓库根;不在 public/ 下就 不会被 Vite 收走) - README.md 引用同步改路径。必须同一个提交:README 由 github.com 按仓库相对 路径渲染,文件一挪就全变破图 - pages.yml 的 paths 过滤器、site-assets.mjs 的 SCREENSHOT_SRC 各一处 qrcode.png 留在 public/ 不动:StatusBar.vue 里写死了 raw.githubusercontent.com/.../master/public/qrcode.png 作为二维码的远程地址, 本地那份是兜底,它确实被应用用着。 实测 dist/ 从约 3.3MB 降到 1.4MB;README 与 README_TECH 的本地图片引用 15 处全部解析。
图片管线(scripts/optimize-images.mjs,手动跑,产物提交): - 截图出 WebP 三档(600/1100/2057)配 <picture> + srcset,落地通常 44–68KB, 相比原 PNG 的 200–330KB 降约 75–80% - favicon 32/180、品牌图标 128、1200×630 社交卡片。原先 28px 的导航图标挂着 512px 的 203KB 原图;og:image 也从截图缩放改成专用卡片(截图比例 1.40:1, 平台按 1.91:1 取景会切掉顶部那排指数) - 不给 CI 加原生依赖(sharp 之类),代价是脚本需要本机 Chrome 三个实测踩出来的坑写进了脚本注释:file:// 下 canvas 会被 taint(要 --allow-file-access-from-files);目标宽 > 源宽时必须整个跳过而不是 Math.min 后仍按目标宽命名(settings-index.png 只有 1298px,早期实现产出的文件叫 -2057.webp 而 HTML 写着 2057w,描述符撒谎);background-clip: text 会静默 吃掉溢出元素框的字形(社交卡片的字标就是这么被截断的)。 SEO/GEO 收尾: - robots.txt 与 llms.txt 从本站删除,唯一一份放进新建的 Leaderxin/leaderxin.github.io —— 协议规定两者都只在域名根被读取,放在 /quant-desktop/ 下等于没有(实测根路径曾是 404)。两份副本必然漂移 - sitemap.xml 改由 site-assets.mjs 按实际页面生成,lastmod 取自 git log。 手维护的话加页面必然漏登记,而失败是静默的 - 引用校验扩展到所有页面,并覆盖 srcset(描述符写错浏览器只会静默降档) - H1 从只有品牌名改为「QuantDesktop 免费开源的 A 股桌面看盘工具」 - description 从 99 字压到 75 字;JSON-LD 补 sameAs - 新增 website/404.html(项目站的 404 必须用站点绝对路径:GitHub Pages 会对 任意深度的失效路径返回它,相对链接会以坏 URL 为基准解析)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
补 #24 合并时漏掉的部分。
你合并 #24 时分支头停在
5fc1d59,而后面两笔(截图搬家、图片管线 + 技术项)是在合并之后才推的,所以都没进 master —— 而且 PR 一关,pull_request触发器就不再理会那个分支,两次提交既没进主干也没跑过 CI。这个 PR 把它们补上。安装包瘦 1.9MB
public/是 Vite 的静态目录,会被整份复制进dist/,而tauri.conf.json的frontendDist就是../dist—— 所以public/screenshots/那 1.9MB 一直在被打进桌面安装包,而应用代码里一处都没引用。搬到仓库根后dist/从约 3.3MB 降到 1.4MB。public/qrcode.png留在原地不动:StatusBar.vue 里写死了raw.githubusercontent.com/.../master/public/qrcode.png作为二维码的远程地址,本地那份是兜底 —— 它确实被应用用着。README 的 13 处引用同步改了路径,必须同一个提交:README 由 github.com 按仓库相对路径渲染,文件一挪就全变破图。
图片管线
截图原图是 2057px PNG,一张 200–330KB;现在出 WebP 三档(600/1100/2057)配
<picture>+srcset,落地通常 44–68KB,降约 75–80%。同时出 favicon 32/180、品牌图标 128(原先 28px 的导航图标挂着 512px 的 203KB 原图)、1200×630 社交卡片。社交卡片是渲染出来的而不是缩放截图:截图比例 1.40:1,平台按 1.91:1 取景会把顶部那排指数切掉。
产物提交进仓库,所以 CI 不需要浏览器 —— 为十几张营销图给每次
npm ci拉一个sharp那样的原生依赖不划算。代价是脚本依赖本机 Chrome(CHROME_PATH可覆盖),只有换截图时才需要手动跑npm run site:images。SEO/GEO 收尾
robots.txt与llms.txt从本站删除,唯一一份放进新建的 Leaderxin/leaderxin.github.io。协议规定两者都只在域名根被读取,放在/quant-desktop/下等于没有 —— 实测https://leaderxin.github.io/robots.txt之前是 404。那份现在已生效,顺带补上了根域名的 404 页。删掉本站副本是为了不留下两份必然漂移的文件。sitemap.xml改由脚本按实际页面生成,lastmod取自git log。手维护的话加页面必然漏登记,而失败是静默的 —— 没有人类链接指向 sitemap 去看它。srcset(描述符写错浏览器只会静默降档,看不出来)。sameAs。website/404.html。项目站的 404 必须用站点绝对路径:GitHub Pages 会对任意深度的失效路径返回它,相对链接会以那条坏 URL 为基准解析。三个实测踩出来的坑
写进脚本注释了,都是不看不知道的:
file://下 canvas 会被 taint,toDataURL直接抛 SecurityError —— 要--allow-file-access-from-files。Math.min后仍按目标宽命名。settings-index.png只有 1298px 宽,早期实现产出 1298px 的图却叫-2057.webp,而 HTML 里写着2057w—— 描述符撒谎会让浏览器算出错误的密度。现在规则是「文件名永远等于真实宽度」,源图比所有目标都小的(行情条那两张 344×59)就不出 WebP。background-clip: text会静默吃掉溢出元素框的字形 —— 渐变只画在框内,溢出部分没有背景可裁,于是color: transparent生效、字直接消失。社交卡片的「QuantDesktop」被截断就是这个,配width: max-content修掉。验证
npm run site:images产出 25 个 WebP,逐个解文件头确认文件名与真实宽高一致(25/25)src/href/srcset解析通过vue-tsc+ 149 个单测全绿;dist/实测 1.4MB一处没查清的地方:1440px 下几张懒加载的功能图会选中比所需大一档的候选(286px 的槽位拿了 1100px 的)。
sizes确实被正确解析(naturalWidth的折算值印证),但 Chrome 的选择结果偏大。核心收益来自格式转换,这一档是额外的,没有继续追。