Rails/Hotwire:禁止在恢复访问时缓存Turbo Frame
解决Turbo Frame恢复访问时强制重新加载的问题
方法1:给Turbo Frame添加专属缓存禁用属性
直接在你的Turbo Frame标签上加上data-turbo-cache="false"属性,Turbo就会跳过对这个Frame内容的缓存,每次恢复访问页面时,都会自动从src指定的URL重新加载内容。
示例代码:
<turbo-frame id="your-frame-id" src="/your-content-path" data-turbo-cache="false"> <!-- 可选的加载占位内容 --> </turbo-frame>
方法2:通过事件监听手动触发刷新
如果需要更灵活的控制逻辑(比如只在特定条件下刷新),可以监听Turbo的turbo:restore事件,在页面被恢复访问时,手动调用Frame的reload()方法强制刷新。
示例代码:
document.addEventListener('turbo:restore', () => { const targetFrame = document.getElementById('your-frame-id'); if (targetFrame) { targetFrame.reload(); } });
方法3:全局禁用Turbo缓存(不推荐)
如果你的场景需要所有Turbo Frame都不缓存,可以全局配置Turbo的缓存选项,但这种方式会影响整个应用的Turbo缓存逻辑,除非必要不建议使用:
Turbo.setOptions({ cache: false });
内容的提问来源于stack exchange,提问作者Manuel Meurer
相关产品推荐
相关产品推荐

