Rin icon indicating copy to clipboard operation
Rin copied to clipboard

[Bug] 缓存问题

Open PSGO opened this issue 1 year ago • 7 comments

编辑文章后,D1数据库中feed数据是正确的,但是文章展示是旧的,在设置中多次清除缓存依然是旧的,Ctrl f5依然是旧的,多次刷新会出现新旧交替的情况,没有固定规律

PSGO avatar Sep 14 '24 13:09 PSGO

看起来应该是 Cloudflare worker 复用的问题,通常半个小时后应该就会恢复正常

OXeu avatar Oct 11 '24 13:10 OXeu

看起来应该是 Cloudflare worker 复用的问题,通常半个小时后应该就会恢复正常

好的,我重新部署再观察一下,谢谢回复

PSGO avatar Oct 12 '24 08:10 PSGO

感觉把这里 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()}`))

也许能缓解。~~不过缓存脏读没找到稳定复现的方法,没法验证是否能修复。~~ 改了以后还是没修复,不是这个问题

panghaibin avatar Nov 03 '24 02:11 panghaibin

你的文章是不是设置了别名?在设置了别名且通过别名访问文章的情况下,能复现缓存错乱

https://github.com/openRin/Rin/blob/d0eeaf0f1047ddcf4dc20b6ff36080b76a8d7c13/server/src/services/feed.ts#L477-L487

@OXeu 这里的逻辑有点没看懂,仅当别名更改时才清除别名的缓存吗?

panghaibin avatar Nov 09 '24 15:11 panghaibin

你的文章是不是设置了别名?在设置了别名且通过别名访问文章的情况下,能复现缓存错乱

https://github.com/openRin/Rin/blob/d0eeaf0f1047ddcf4dc20b6ff36080b76a8d7c13/server/src/services/feed.ts#L477-L487

@OXeu 这里的逻辑有点没看懂,仅当别名更改时才清除别名的缓存吗?

看起来确实是个判断的 bug

OXeu avatar Nov 09 '24 16:11 OXeu

有点疑惑typedi在CloudFlare Workers的生命周期是多少?按理说每次请求都应该会重新实例化CacheImpl才对,但从打的日志上看,有时这个请求只打了Cache hit的日志,没打Cache load的,应该每次请求都要触发load()才对吧?

panghaibin avatar Nov 10 '24 06:11 panghaibin

有点疑惑typedi在CloudFlare Workers的生命周期是多少?按理说每次请求都应该会重新实例化CacheImpl才对,但从打的日志上看,有时这个请求只打了Cache hit的日志,没打Cache load的,应该每次请求都要触发load()才对吧?

单个 worker 短期内是会处理多个请求的,并不是每个请求都创建一个新的

OXeu avatar Nov 11 '24 02:11 OXeu