Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Service 为什么在清单中使用固定URL进行预处理?_Service_Service Worker_Progressive Web Apps_Sw Precache - Fatal编程技术网

Service 为什么在清单中使用固定URL进行预处理?

Service 为什么在清单中使用固定URL进行预处理?,service,service-worker,progressive-web-apps,sw-precache,Service,Service Worker,Progressive Web Apps,Sw Precache,我读到了关于与服务人员进行预制的文章,最后我得到了这个 我不明白为什么它使用固定的URL和散列。每次文件更改时都必须动态创建它们 那么,手动放置它们并将revision设置为null有什么意义呢?如果您讨论的是Workbox将文件哈希值标记到URL的方式,那么我可以回答这个问题 散列是对文件内容的计算。在更改文件中的任何内容之前保持不变。然后该文件有一个不同的散列。因此,每次运行脚本以生成服务工作者时,Workbox都会生成清单 然后,当安装service worker时,它将仅获取已更新的网络

我读到了关于与服务人员进行预制的文章,最后我得到了这个

我不明白为什么它使用固定的URL和散列。每次文件更改时都必须动态创建它们


那么,手动放置它们并将revision设置为null有什么意义呢?

如果您讨论的是Workbox将文件哈希值标记到URL的方式,那么我可以回答这个问题

散列是对文件内容的计算。在更改文件中的任何内容之前保持不变。然后该文件有一个不同的散列。因此,每次运行脚本以生成服务工作者时,Workbox都会生成清单

然后,当安装service worker时,它将仅获取已更新的网络资产的更新。它还可以执行哈希检查,以验证文件是否符合预期

在没有清单文件和要维护的构建步骤的情况下,我实现这一点的另一种方法是向网络资产发出HEAD请求。服务器应返回上次更新的头值,您可以在创建文件时对照缓存中的值进行检查

我还没有完全完善这项技术,但当它稳定下来后,我可能会写一篇关于该方法的文章


但最终目标是尽可能减少往返次数,减少服务器和客户端的数据负担。

谢谢您的回答,但我问了另一个问题。我在问,当正确的方法是动态创建清单时,为什么文档会显示带有固定URL和哈希的清单。如果你把它们当作固定字符串,那么每次你把某个东西改成文件时,你也必须把它改成SW文件。对于预缓存的资产,它们很可能是固定的静态资产,比如JS或CSS文件。如果您希望缓存一个大型站点,比如大型电子商务站点,那么您不会预缓存所有内容。缓存是一门艺术,我在不同的应用程序上使用了至少30多种不同的策略。然后你进入失效规则,等等。这是一个非常复杂的主题,正确地做。