召田最帅boy

小程序登录页:从账号框点到密码框,键盘闪一下就收起了

本站实践

炊想登录页上,键盘弹着时从账号框点到密码框,键盘被强制收起。前四个版本都在猜(setData 抢焦点、自动填充栏、点击被当成点空白、两个原生输入框互相影响),都没修好;第五次先在真机上记事件日志,再用一张对照测试页并排测试,发现只有「文本键盘直接切到密码键盘」会丢焦点,问题在系统换键盘那一层。本文记录弯路、排查方法、补救办法(先收起、等系统缓过来再聚焦并自动重试)和取舍。

一份菜谱要写 90 秒:流式读取与三道超时的先后

本站实践

炊想小程序上线第一天,点一道新菜连续两次收到 504。排查发现:一份菜谱约 1600 个 token,上游每秒十几个,要写 90 秒;非流式请求的读超时实际等于「整份必须多少秒内写完」,75 秒必断,重试又等 75 秒,而 nginx 120 秒就替后端回了 504。本文记录改成流式读取(读超时只管两段间隔、另设总时限)、按「越靠近上游越先放弃」重排后端、nginx、小程序三道超时、晚失败不重试,以及上线后的真实耗时和 9 个模型的实测对比。

【炊想】小程序:说一道菜,配成一桌饭

本站实践

「今天吃什么」最难答。炊想小程序输入一道菜名,就给出精确用量和分步做法,并搭配配菜、汤品、主食、饮品一整桌,附成品图;五十道常见家常菜已提前搭好,点开就看。会员可以改一改这道菜、换一张成品图,按饮食目标和家里的厨具来搭,还能排一周菜单和请客菜单、合并买菜清单;月卡 ¥18、季卡 ¥45。微信扫码或搜索「炊想」即可使用。

【更新日志】

日常

本文根据两个仓库共 703 条 Git 提交整理,记录这个博客从 2023 年 1 月第一次进入 Git 到 2026 年 9 月的完整演进:2023 年从零到可用;2024 年补齐七牛封面、登录封禁、评论审核与缓存;2025 年围绕评论系统深度重构;2026 年上半年引入 AI 问答与 AI 评论审核;7 月并入 total 聚合工程后,又经历了界面重做、自托管字体与图表、评论 AI 容错,以及 9 月一轮集中的性能、可靠性与细节治理。

小程序分享卡片:自己看正常,对方收到只有小程序名——后台的「分享签名校验」

本站实践

在小程序里分享菜谱,发出方看到的卡片有标题有封面,接收方却只看到小程序名和一块灰色占位。排除了 onShareAppMessage、图片地址、临时文件和 promise、版本改动之后,发现原因是小程序后台开着「分享请求签名校验」:没带签名的分享会被平台降级成默认卡片。本文记录现象、排查过程、官方文档的要点,以及关闭校验和补齐签名两种解法。

代码块里多出来的那截颜色:行内底色、color-mix 兜底与逐像素回归

本站实践

换到流萤主题后,代码块里多出两种颜色:每行有字的地方垫着一块底色,折叠时底部渐隐和「展开全部」条偏蓝。原因都是组件底座写死了藏青色,而主题的代码底色换了。本文记录排查和修法:行内元素的背景为什么一行一画;想保留渐隐曲线只换颜色时用 color-mix,以及带 var() 的 color-mix 在旧浏览器里会整条失效、兜底必须写在后面的 @supports 里;用自写 PNG 解码逐像素比较,证明其它主题一个像素都没变;Playwright 定位器重新查询造成的假「点了没反应」;AI 助手黑夜里的同类问题。

Canvas分享海报

本站实践

博客文章页的分享海报重做了一遍:加上封面、分类、标签和头像,弹窗改成一屏放下。本文记录重做时量出来的几个问题:旧版逐字换行,全站 372 篇文章里有 288 篇的海报把英文单词拆开、把标点放在行首;canvas 画了跨域图片就会被污染、无法导出,七牛的图要服务器允许跨域、页面设置 crossOrigin 才能画,而 Chrome 还会为这类请求单独建连接;二维码先画成小图再放大,边缘有三成是灰色的过渡像素。以及对应的断行规则、图片加载策略和按屏幕尺寸计算海报大小的写法。

849 KB 的字体一个字没用上:博客冷加载流量减半

本站实践

博客默认主题换成流萤后,用无头 Chrome 在手机尺寸下做冷加载实测:首页 1495 KB 里有 849 KB 是一个字体文件,页面上却没有一个字用它。本文记录这一轮排查:预加载让按需下载的字体变成必下,CSS 背景图当最大内容时浏览器发现得太晚,评论照片显示 220px 却下载 1080px,改 srcset 时撞上同一段 HTML 被规范化两遍,以及打字机副标题折行导致的首屏跳动。改完四个页面的冷加载流量减少 42% 到 68%。

position: fixed 为什么不固定了:包含块实测与排查

本站实践

给博客的手机菜单做右侧抽屉时,一个 position: fixed、top 和 bottom 都是 0 的抽屉,只要写在顶栏里面就只有 64px 高,顶栏向上收起时还会被一起带走——毛玻璃用的 backdrop-filter 让顶栏成了它的包含块。本文先说明 fixed 元素的包含块什么时候不再是视口,再用 Chrome 154 实测 20 种写法:transform、translate、filter、backdrop-filter、perspective、will-change: transform、contain、content-visibility 会“截胡”,opacity、isolation、mix-blend-mode、z-index、container-type 只建立层叠上下文、不会截胡;全站置灰的滤镜放在 html 上安全,放在 body 上会让所有 fixed 元素跟着页面滚走。最后给出用 offsetParent 一行找到“截胡者”的排查方法,以及挪出 DOM、把属性挪到伪元素上两种修法。

博客六套主题的实现与踩坑

本站实践

博客在六天里从一套样式变成了六套主题。第一版只叠了一张 1528 行的覆盖样式表,颜色换了、骨架没变,第二天推倒重来:每套主题一套独立模板,评论、表情、AI 助手等组件抽成共享片段,脚本一行不改。本文记录这套结构的划分与回退机制、Thymeleaf 片段选择器和 CSS 层叠带来的几个坑、去掉点击后的焦点框时要对付的 120 条规则,明暗切换的圆形扩散为什么在流萤上看不出来、又为什么一顿一顿,用无头 Chrome 做流畅度测试找到的几处主线程空转,以及不部署就在线上页面验证本地样式的方法。