我们必须面对一个事实,AppCache 很烦人,还存在一些问题 [1, 2, 3]。一大限制是无法按需动态缓存资产。从本质上讲,这在应用离线运行方面大有裨益。清单中的所有内容要么预先缓存,要么什么内容都不缓存。
HTML5 FileSystem API 可以很好地弥补 AppCache 的缺点。用户可以以编程方式将文件和文件夹层次结构存储在本地(沙盒化)文件系统中,随后根据需要添加/更新/移除各个资源。我的同事 Boris Smus 甚至编写了一个出色的库,以便在游戏环境中管理此类离线缓存。也可以推断出同样的想法,适用于任何类型的 Web 应用。
crbug.com/89271 是一项针对 FileSystem API 的重要修复,该修复使相对 filesystem: 网址 路径起作用。
例如,我将 index.html 保存在文件系统的根文件夹 (fs.root
) 中,创建了一个 img 文件夹,并在其中保存了“test.png”。这两个文件的 filesystem:
网址分别为 filesystem:http://example.com/temporary/index.html
和 filesystem:http://example.com/temporary/img/test.png
。然后,如果要对 img.src
使用“test.png”,我需要使用其完整的绝对路径:<img src="filesystem:http://example.com/temporary/img/test.png">
。这意味着重写 index.html 中的所有相对网址,以指向相应文件的 filesystem:
网址。一点都不酷!现在,通过这项 bug 修复,我可以保留文件的相对路径 (<img src="img/test.png">
),因为它们会正确解析为文件系统源。
借助此功能,您可以轻松下拉页面,离线保存页面的所有资源,同时仍可保留与在线版本完全相同的文件夹结构。