我有一个平均大小的网络应用程序,其中包含构成前端部分的HTML,CSS,png和Javascript文件。我正在使用服务工作者来添加我的应用程序在不在线时工作的能力。我必须向服务工作者提供缓存所需文件的列表,但我不知道如何告诉我实际需要哪些文件。当您使用npm安装软件包时,您还会获得一些您不需要的东西,因此我无法缓存所有内容。
我知道浏览器调试窗口的网络选项卡显示实际正在加载的内容,但这太繁琐了。有什么方法可以自动化吗?
谢谢!
Blake McBride
答案 0 :(得分:0)
你会遇到五个令人头疼的问题:
虽然这不能回答您的明确问题,但有一个建议可能会限制您的痛苦,即:在将文件添加到服务工作者缓存之前,设置cache-control
和expires
标头并构建如果您的用户在离线时遇到缓存未命中,则逻辑会失败 - 请参阅Cache-Control。
设置缓存控件后,从浏览器的开发工具中的网络选项卡中,您将看到从设备缓存加载的资源的不同状态代码,这是您的开始列表缓存。
从那里,您可以在控制台中执行以下操作,以利用Performance API生成文件列表
window.performance
.getEntriesByType("resource")
.forEach( (resource) => console.log( resource.name ) );
答案 1 :(得分:0)
我发现如果您右键单击Chrome浏览器调试窗口的“网络”标签的内容,则可以选择“另存为内容为HAR”。这将保存显示所有已加载资源的XML文件。然后做:
grep '"url":' xxx.xxx.xxx.xxx.har
您将获得完整的资源列表。