<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Tony&apos;s Notes</title><description>Web、Cloudflare 与工程实践。</description><link>https://taotao.dev/</link><language>zh-cn</language><item><title>Workers 自定义域名：把 DNS、路由和 TLS 分层排查</title><link>https://taotao.dev/writing/dns-worker-custom-domain/</link><guid isPermaLink="true">https://taotao.dev/writing/dns-worker-custom-domain/</guid><description>通过明确三层责任定位域名无法访问，而不是反复删除 DNS 记录。</description><pubDate>Tue, 20 Oct 2026 00:00:00 GMT</pubDate></item><item><title>重定向的两个边界：保留请求语义，限制目标来源</title><link>https://taotao.dev/writing/http-redirect-safety/</link><guid isPermaLink="true">https://taotao.dev/writing/http-redirect-safety/</guid><description>区分 301、302、303、307 与 308，并防止登录回跳变成开放重定向。</description><pubDate>Tue, 20 Oct 2026 00:00:00 GMT</pubDate></item><item><title>CSP 上线顺序：先收集违规，再缩小执行权限</title><link>https://taotao.dev/writing/csp-rollout/</link><guid isPermaLink="true">https://taotao.dev/writing/csp-rollout/</guid><description>为静态网站逐步建立内容安全策略，避免一次性阻断合法脚本与样式。</description><pubDate>Mon, 19 Oct 2026 00:00:00 GMT</pubDate></item><item><title>导航设计：位置感比入口数量更重要</title><link>https://taotao.dev/writing/navigation-orientation-hierarchy/</link><guid isPermaLink="true">https://taotao.dev/writing/navigation-orientation-hierarchy/</guid><description>从组织设置深链接出发，定义范围提示、对象层级、路由选中状态与移动导航的可理解边界。</description><pubDate>Mon, 19 Oct 2026 00:00:00 GMT</pubDate></item><item><title>ETag 与条件请求：304 不是没有发生请求</title><link>https://taotao.dev/writing/conditional-http-requests/</link><guid isPermaLink="true">https://taotao.dev/writing/conditional-http-requests/</guid><description>用实体标签避免重复正文传输，同时理解验证、编码与缓存一致性。</description><pubDate>Sun, 18 Oct 2026 00:00:00 GMT</pubDate></item><item><title>发布风险评估要看失败后能否恢复，不只看改了多少行</title><link>https://taotao.dev/writing/release-risk-product-design/</link><guid isPermaLink="true">https://taotao.dev/writing/release-risk-product-design/</guid><description>从订阅、计费与数据迁移比较发布风险，设计灰度、回滚与前进修复。</description><pubDate>Sun, 18 Oct 2026 00:00:00 GMT</pubDate></item><item><title>表单错误设计：让用户知道改哪里与为什么</title><link>https://taotao.dev/writing/form-errors-actionable-recovery/</link><guid isPermaLink="true">https://taotao.dev/writing/form-errors-actionable-recovery/</guid><description>用预约表单区分字段与服务错误，处理异步校验乱序，并建立可定位且保留有效输入的恢复路径。</description><pubDate>Sat, 17 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Workers Cache API 与 CDN 缓存不是同一个开关</title><link>https://taotao.dev/writing/worker-cache-api-semantics/</link><guid isPermaLink="true">https://taotao.dev/writing/worker-cache-api-semantics/</guid><description>分清 fetch 缓存、Cache API 和边缘节点范围，避免误判命中与清理效果。</description><pubDate>Sat, 17 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Astro 岛屿边界：交互组件应为谁付出 JavaScript 成本</title><link>https://taotao.dev/writing/astro-island-boundaries/</link><guid isPermaLink="true">https://taotao.dev/writing/astro-island-boundaries/</guid><description>从搜索与导航场景判断 hydration 的必要性，并验证组件加载时机。</description><pubDate>Fri, 16 Oct 2026 00:00:00 GMT</pubDate></item><item><title>一个产品实验，应该在看结果之前决定怎样结束</title><link>https://taotao.dev/writing/product-experiment-design/</link><guid isPermaLink="true">https://taotao.dev/writing/product-experiment-design/</guid><description>说明随机分组、主要指标、护栏和低流量替代验证，避免事后挑选成功证据。</description><pubDate>Fri, 16 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Canonical URL 是部署契约，不只是 SEO 标签</title><link>https://taotao.dev/writing/canonical-url-contract/</link><guid isPermaLink="true">https://taotao.dev/writing/canonical-url-contract/</guid><description>统一域名、路径和内容身份，避免预览环境与生产环境互相污染。</description><pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate></item><item><title>RSS 也是公开接口：不要让订阅源绕过发布规则</title><link>https://taotao.dev/writing/rss-publication-boundary/</link><guid isPermaLink="true">https://taotao.dev/writing/rss-publication-boundary/</guid><description>统一文章、RSS 与站点地图的数据入口，避免未来文章和草稿泄漏。</description><pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate></item><item><title>产品指标的第一步，是让事件名称对应真实价值</title><link>https://taotao.dev/writing/product-metrics-definition/</link><guid isPermaLink="true">https://taotao.dev/writing/product-metrics-definition/</guid><description>从技术内容产品设计激活、留存与质量指标，避免点击量冒充成功。</description><pubDate>Wed, 14 Oct 2026 00:00:00 GMT</pubDate></item><item><title>静态路由冲突：文章 slug 不是随手取的文件名</title><link>https://taotao.dev/writing/static-route-collisions/</link><guid isPermaLink="true">https://taotao.dev/writing/static-route-collisions/</guid><description>通过保留路径、规范化和构建检查防止 Astro 内容路由互相覆盖。</description><pubDate>Wed, 14 Oct 2026 00:00:00 GMT</pubDate></item><item><title>可访问性不是检查清单：从键盘任务开始</title><link>https://taotao.dev/writing/accessibility-keyboard-task/</link><guid isPermaLink="true">https://taotao.dev/writing/accessibility-keyboard-task/</guid><description>从任务分配流程分析键盘入口、焦点生命周期与状态公告，并明确真实辅助技术的验收范围。</description><pubDate>Tue, 13 Oct 2026 00:00:00 GMT</pubDate></item><item><title>用内容 Schema 把编辑错误拦在构建之前</title><link>https://taotao.dev/writing/astro-content-schema/</link><guid isPermaLink="true">https://taotao.dev/writing/astro-content-schema/</guid><description>为 Astro 文章建立可执行的元数据契约，并区分格式正确与内容可信。</description><pubDate>Tue, 13 Oct 2026 00:00:00 GMT</pubDate></item><item><title>缓存键设计：先定义哪些响应可以共享</title><link>https://taotao.dev/writing/cache-key-design/</link><guid isPermaLink="true">https://taotao.dev/writing/cache-key-design/</guid><description>从语言、身份和查询参数出发，建立不会串数据的 HTTP 缓存键。</description><pubDate>Mon, 12 Oct 2026 00:00:00 GMT</pubDate></item><item><title>用户说想要一个功能，先追问他现在怎样完成任务</title><link>https://taotao.dev/writing/product-discovery-evidence/</link><guid isPermaLink="true">https://taotao.dev/writing/product-discovery-evidence/</guid><description>把功能请求转成可验证的机会，结合访谈、行为证据与低成本实验。</description><pubDate>Mon, 12 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Astro + Workers：一个内容网站的部署路径</title><link>https://taotao.dev/writing/astro-workers/</link><guid isPermaLink="true">https://taotao.dev/writing/astro-workers/</guid><description>从 Markdown 到静态页面，再到边缘网络。把内容、构建与部署的边界说明白。</description><pubDate>Sun, 11 Oct 2026 00:00:00 GMT</pubDate></item><item><title>把技术笔记当作代码来维护</title><link>https://taotao.dev/writing/content-first/</link><guid isPermaLink="true">https://taotao.dev/writing/content-first/</guid><description>用内容集合约束元数据，用 Git 留下修改记录，让写作与发布保持简单。</description><pubDate>Sat, 10 Oct 2026 00:00:00 GMT</pubDate></item><item><title>提交、推送、上线：三个不同的完成状态</title><link>https://taotao.dev/writing/verify-deployment/</link><guid isPermaLink="true">https://taotao.dev/writing/verify-deployment/</guid><description>一次本地提交并不意味着网站已经更新。用小而明确的检查闭合发布流程。</description><pubDate>Fri, 09 Oct 2026 00:00:00 GMT</pubDate></item></channel></rss>