关于Object URL缓存及URL.revokeObjectURL上下文绑定的技术问询
关于Object URL的两个问题
1. Object URL是否被缓存?
在同一上下文测试发现,调用URL.revokeObjectURL()后Object URL仍可访问。
(async () => { const str = `export class Hi { static log() { console.log('Hello there!'); } }`; const blob = new Blob([str], {type: 'text/javascript'}); const url = URL.createObjectURL(blob); console.log(blob); // Blob { size: 73, type: "text/javascript" } console.log(url); // blob:null/92bfa492-... const {Hi} = await import(url); console.log(Hi); // class Hi {} Hi.log(); // Hello there! URL.revokeObjectURL(url); // test after delay for (let i = 1; i < 4; i++) { const n = 10*i; setTimeout(async () => { console.log(`After ${n} seconds`); const obj = await import(url); console.log(Hi); // class Hi {} Hi.log(); // Hello there! }, n*1000); } })();
2. URL.revokeObjectURL()是否与上下文绑定?
在后台脚本(或动作弹窗脚本)中创建并传递给内容脚本的Object URL,能否在内容脚本中被撤销?
更新
相关参考:
- 是否必须显式调用URL.revokeObjectURL()?
- URL.createObjectURL会导致内存泄漏?
- window.URL.revokeObjectURL()无法立即(或完全)释放内存?
- 加载图片后调用revokeObjectURL?
内容的提问来源于stack exchange,提问作者erosman
相关产品推荐
相关产品推荐

