最近小编发现自己的电脑C盘急转之下空间告急,正在用PS处理一张图片时提示暂存盘空间不足,然后软件终止关闭了。打开“我的电脑”后看到C盘只剩下可怜的9GB空间了,满脸的疑惑。心想不应该啊,C盘有100G呢,除了系统占用外,少量软件占用,至少也还能有20G的剩余,并且我也不往C盘里存东西。于是用最笨的方法挨个文件夹排查,终于定位于“C:\Users\Administrator\AppData\Roaming\360se6\User Data\Default\IndexedDB\https_v.youku.com_0.indexeddb.blob”文件夹下。
这是360安全浏览器下面的一个专门存储用户临时数据的文件夹,其中“IndexedDB”是数据库文件夹,下面每一个使用到了IndexedDB数据库功能的网站都会产生一个子文件夹。
那么“IndexedDB”到底是个什么东西呢,从网上查询到:
indexedDB是一种数据持久存储在用户浏览器中的方法。
可以创建出具有丰富查询功能的web应用程序,而无需在意网络是否可用,即在一定程度下实现联机和脱机运行。
IndexedDB数据库是HTML5新增,具有强大的数据存储与查询能力。
(1)存储数据量非常大,在理论上基本上不封顶。具体的上限按照磁盘进行计算,理论上是可以磁盘空间的50%
(2)是文档型数据库,与Mongodb等类似,与常见的关系型数据库不同,不支持SQL语句查询。
(3)支持且只支持transaction事务,对保证数据安全具有重要意义,与传统数据库中的事务目的一致。
(4)遵循同源策略,所以网页只能访问同域的IndexedDB数据库,而无法访问其他域上的数据。
(5)大多数情况下API采用异步操作,以防止数据操作量大时,阻塞其他操作的进行。(同步暂时大部分的浏览器暂不支持)
(6)不是以表的形式存储数据,而是通过对象仓库存储。(可以理解为一张表,但从存储结构上并不一样)
(7)数据库除了存储字符串外,还可以存储Date, Object, Arra, File, Blob, ImageData或二进制等数据类型。
(8)能够为数据建立索引,以此提高查询数据的各方面性能。(这个非常有用,是大数据快速查找的前提)
简单的说,IndexedDB就是浏览器客户端上的一个数据库功能,HTML5才有的新功能,需要用IndexedDB数据库的网站会在客户端本地的“IndexedDB”文件夹内生成一个网站域名对应的子文件夹,里面存储着数据库文件。有点像Cookies的扩展版,但是IndexedDB没有存储上限,存储几十GB都是可以的。小编此时有个疑问,这不是一个很大的BUG吗?如果某个使用IndexedDB数据库功能的网站被黑了,向用户机狂写垃圾数据,导致客户机变慢,性能下降,影响正常使用,这不是很危险的事吗?
即使没有居心不良的人利用,事实上YOUKU网站用来做视频缓存使用,IndexedDB数据库本身并不是用来存视频数据的,它是key-value的值对数据结构型。小编试过了,其它的视频网站在观看视频时并没有产生如此之大的IndexedDB数据,有的网根本没有,少数网站使用了IndexedDB数据库也只有几MB的大小,甚至只有几十KB。用IndexedDB存储视频缓存的一大好处就是运营商节省带宽,对于重复观看的内容,不必从网站服务器端重新获取视频数据,而只需要在本地缓存中读取,但是缺点显而易见,占用了大量的本地磁盘空间。关键是无法手动清除,除了手动删除文件夹外,目前还没有找到在浏览器设置里面控制IndexedDB大小的相关设置,或是禁用的设置。