<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>云寒 · 技术手记</title><link>https://yunhan.io/</link><description>Web、系统与工程实践</description><language>zh-cn</language><item><title>静态站发布，不该是一场文件覆盖实验</title><link>https://yunhan.io/articles/atomic-static-deploy/</link><guid isPermaLink="true">https://yunhan.io/articles/atomic-static-deploy/</guid><pubDate>Thu, 01 Oct 2026 08:00:00 GMT</pubDate><description>从 release 目录、原子切换到可验证回滚，把一次发布变成可重复的过程。</description></item><item><title>超时与重试：给分布式请求一个预算</title><link>https://yunhan.io/articles/timeouts-and-retries/</link><guid isPermaLink="true">https://yunhan.io/articles/timeouts-and-retries/</guid><pubDate>Thu, 01 Oct 2026 08:00:00 GMT</pubDate><description>连接超时、首字节与整轮截止时间解决不同问题；重试之前，先问操作能否重复。</description></item><item><title>SQLite 的可靠性，从事务边界开始</title><link>https://yunhan.io/articles/sqlite-transactions/</link><guid isPermaLink="true">https://yunhan.io/articles/sqlite-transactions/</guid><pubDate>Thu, 01 Oct 2026 08:00:00 GMT</pubDate><description>WAL 不是多写者魔法。理解锁、短事务和一致性备份，才能用好这个轻量数据库。</description></item><item><title>HTTP 缓存，是客户端与服务器的契约</title><link>https://yunhan.io/articles/http-cache-contract/</link><guid isPermaLink="true">https://yunhan.io/articles/http-cache-contract/</guid><pubDate>Thu, 01 Oct 2026 08:00:00 GMT</pubDate><description>区分 no-cache 与 no-store，理解 ETag 和 Vary，让更新可见而不是靠强制刷新碰运气。</description></item><item><title>一个可访问的阅读页面，应该先不用鼠标</title><link>https://yunhan.io/articles/accessible-reading/</link><guid isPermaLink="true">https://yunhan.io/articles/accessible-reading/</guid><pubDate>Thu, 01 Oct 2026 08:00:00 GMT</pubDate><description>语义化 HTML、可见焦点和可缩放布局，通常比添加一套复杂组件更有用。</description></item></channel></rss>