我正在尝试使用 Angular 6 设置 PWA,但无法让 Service Worker 离线提供内容。我尝试了很多配置和东西几天了,但没有成功。
Service Worker 似乎已注册并且在 Chrome 的审计选项卡中运行灯塔通过了 pwa 测试。
我正在使用 Contentful 为该站点提供文本/资产。Service Worker 正在从 dataGroups 中获取内容,但在 Service Worker 进行获取时返回 204 代码。我只能假设这会导致缓存存储为空。
但话又说回来,我希望灯塔测试失败,因为它不提供离线内容。我认为这是因为只要会话没有改变,页面就可以脱机工作。这意味着如果我关闭网络连接,它会在我从一条路线导航到另一条路线时工作,但如果我重新加载/打开新标签页/重新打开浏览器,则会失败并显示 504 代码。
我在本地 IIS 下托管 Angular 6 应用程序。
索引.html:
<base href="/servicemanager/">
Run Code Online (Sandbox Code Playgroud)
网络配置:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Angular Routes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/servicemanager/index.html" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)
ngsw-config.json:
"dataGroups": [
{ …Run Code Online (Sandbox Code Playgroud) service-worker contentful progressive-web-apps angular angular-service-worker