如何使用所有网站页面初始化sw-precache

时间:2017-04-23 19:22:24

标签: service-worker sw-precache

我想让应用程序完全脱机。即,用户点击一个按钮(或不是,这可能会自动发生),而在线和每个页面,包括所有动态页面,以及网站上的资产都可以被缓存。

我知道我需要生成所有资产的列表,是否有可以执行此操作的工具,或者内置于sw-precache的任何方式?

此外,缓存有多大,可用多长时间?我认为除非用户专门清除浏览器缓存,否则它可以是任何大小和可用的。

1 个答案:

答案 0 :(得分:0)

如果您有一个充满静态文件(HTML,JS,CSS等)的本地目录,sw-precache可以配置为根据您的模式自动预先缓存所有这些文件(或其中的一些子集)传入staticFileGlobs option。用户以前预先输入的条目'浏览器将在您进行本地更改时保持最新,重新生成service-worker.js并重新部署。

通常,使用Cache Storage API可以存储的最大数据量没有硬上限。它取决于当前空闲的空间量(可能与其他启发式一起)。

在确定哪些文件被预先缓存时,您应该考虑周到,并确保它们实际上是您的用户可能觉得有用的文件。例如,如果用户第一次访问您的(假设的)文档站点,他们最终会下载并存储数千个单独的HTML文档,这会浪费您的服务器和用户的带宽 - 除了服用增加用户空间'设备

如果您有大量可选或不太可能需要所有访问者的资源,那么使用关键资源的预先缓存策略以及可选资源的runtime caching strategy是最好的打赌。您可以将运行时缓存策略与最大缓存大小或最大年龄相结合,而基础sw-toolbox库将为您删除旧条目。