调用pin_get读取GitHub仓库pinned对象存在更新延迟问题求助
延迟原因
出现5-10分钟的延迟是两个因素共同导致的:
- GitHub的raw文件CDN默认有5~10分钟的缓存策略,即使仓库内的文件已经更新,CDN节点仍然会在缓存有效期内返回旧版本内容
- pins包默认启用本地缓存,拉取过的pin会存储在本地目录,后续调用
pin_get会优先读取本地缓存,不会主动请求远端最新内容
解决方案
- 强制跳过pins本地缓存
调用pin_get时添加cache = FALSE参数,强制每次都请求远端内容,避免读取本地旧缓存:
Results <- pin_get("Results", board = "GitHub-BFDD", cache = FALSE)
- 绕过GitHub CDN缓存
注册GitHub board时将use_raw参数设置为FALSE,禁用默认的raw CDN链路,改用GitHub API直接拉取内容,API返回的是仓库实时内容,不会受CDN缓存影响:
board_register_github( name = "GitHub-BFDD", repo = "AkthemRehab/BFDD", branch = "main", use_raw = FALSE )
- 高频更新场景优化
如果你的应用更新频率在分钟级及以上,不建议使用GitHub作为pin存储后端:GitHub本身是代码托管平台,不是为高频读写设计的,API调用也存在速率限制。建议改用本地磁盘、Redis、S3等专为高频读写设计的存储作为board后端,可实现实时同步。
内容的提问来源于stack exchange,提问作者Akthem
相关产品推荐
相关产品推荐

