【发布时间】:2011-08-23 20:31:06
【问题描述】:
我正在使用createObjectURL 获取本地图像文件的参考 URL。当我完成文件/图像时,我调用revokeObjectURL 来释放该内存。一切对我来说都很好,但我只是想确保我正在释放我能释放的所有内存。
我在查看chrome://blob-internals 页面后产生了担忧。在调用createObjectURL 并使用图像时,我注意到创建了两个条目。一个有网址
blob:blobinternal:///d17c4eef-28e7-42bd-bafa-78d5cb86e761
和其他的
blob:http://localhost/dbfe7b09-81b1-48a4-87cd-d579b96adaf8
虽然两者都引用了相同的本地文件路径。在调用revokeObjectURL 时,仅从chrome://blob-internals 中删除了第二个条目。为什么会出现这种情况,如何去掉其他条目,这两种类型有什么区别?
此外,我还看到有人在使用图片之前就撤消了 URL。这有什么影响?
非常感谢您对该主题的一些见解! :)
编辑: 我在jsfiddle 创建了一个示例。所以首先打开blobinternals 并删除所有现有的blob。然后运行 jsfiddle 示例,并在您的机器上选择一个图像文件。然后刷新 blobinternals 以查看它添加了什么。然后在我的示例中单击“撤销 URL”。最后刷新 blobinternals 以查看剩余的 blob。
【问题讨论】:
-
您使用的是哪个版本的 Chrome?我在 Chrome 15 Dev 频道上没有看到这个(只创建了一个 blobURL),但记得以前看过这个。你有一个小的测试页面可以回购正在生成的两个 URL 吗?根据我的经验,
chrome://blob-internals有时需要几秒钟才能反映revokeObjectURL调用。 -
我已经编辑了我的帖子以包含一个 jsfiddle 示例。我正在运行 chrome 14beta。
标签: javascript image html fileapi