[Bug] 缓存问题
编辑文章后,D1数据库中feed数据是正确的,但是文章展示是旧的,在设置中多次清除缓存依然是旧的,Ctrl f5依然是旧的,多次刷新会出现新旧交替的情况,没有固定规律
看起来应该是 Cloudflare worker 复用的问题,通常半个小时后应该就会恢复正常
看起来应该是 Cloudflare worker 复用的问题,通常半个小时后应该就会恢复正常
好的,我重新部署再观察一下,谢谢回复
感觉把这里 https://github.com/openRin/Rin/blob/d0eeaf0f1047ddcf4dc20b6ff36080b76a8d7c13/server/src/utils/cache.ts#L34
改成
const response = await fetch(new Request(`${this.cacheUrl}?_t=${new Date().getTime()}`))
也许能缓解。~~不过缓存脏读没找到稳定复现的方法,没法验证是否能修复。~~ 改了以后还是没修复,不是这个问题
你的文章是不是设置了别名?在设置了别名且通过别名访问文章的情况下,能复现缓存错乱
https://github.com/openRin/Rin/blob/d0eeaf0f1047ddcf4dc20b6ff36080b76a8d7c13/server/src/services/feed.ts#L477-L487
@OXeu 这里的逻辑有点没看懂,仅当别名更改时才清除别名的缓存吗?
你的文章是不是设置了别名?在设置了别名且通过别名访问文章的情况下,能复现缓存错乱
https://github.com/openRin/Rin/blob/d0eeaf0f1047ddcf4dc20b6ff36080b76a8d7c13/server/src/services/feed.ts#L477-L487
@OXeu 这里的逻辑有点没看懂,仅当别名更改时才清除别名的缓存吗?
看起来确实是个判断的 bug
有点疑惑typedi在CloudFlare Workers的生命周期是多少?按理说每次请求都应该会重新实例化CacheImpl才对,但从打的日志上看,有时这个请求只打了Cache hit的日志,没打Cache load的,应该每次请求都要触发load()才对吧?
有点疑惑
typedi在CloudFlare Workers的生命周期是多少?按理说每次请求都应该会重新实例化CacheImpl才对,但从打的日志上看,有时这个请求只打了Cache hit的日志,没打Cache load的,应该每次请求都要触发load()才对吧?
单个 worker 短期内是会处理多个请求的,并不是每个请求都创建一个新的