当前位置: 首页 > 知识库问答 >
问题:

Angular 5服务人员不工作/不缓存背景图像

太叔繁
2023-03-14

我很难让我的angular5服务人员工作。我有两个主要问题:

  1. 服务工作者不缓存用作背景图像的资产图像
  2. 在模拟网络断开连接后,服务工作人员最初从缓存中提取文件(除了前面提到的非缓存文件),但在第二次刷新后,它会遇到错误。

下面是我的问题的更详细的报告。您可以通过克隆我所做的回购来强调这个问题。

我创建了带有--service-Worker标记的应用程序。然后我确保了Angular留档中列出的5个步骤,即:

  1. 添加了Service Worker包。
  2. angular-cli.json已将服务工人设置为true
  3. 服务工人进口并在app.module.ts注册
  4. ngsw-config.json按照留档中的描述生成和配置。
  5. 运行ng build--prod在应用程序的dist文件夹中生成包。

我使用node/express和服务器为我的应用程序提供服务。js文档。当我在一个匿名窗口中打开应用程序时(按照文档的建议),我看到我的服务人员得到了注册,缓存存储了我的包和索引文件。它还缓存img标记中使用的图像,但不缓存在我的css背景图像中指定的图像。当我通过选中“服务人员”上的“脱机”框模拟网络问题,然后刷新页面时,页面会正确显示所有内容,但需要背景图像的部分除外。

但当我第二次刷新应用程序或打开另一个选项卡时(在同一个“匿名”窗口上,因此服务工作者仍在注册,缓存仍处于活动状态),就会出现最终/主要问题。在这一点上,我没有得到任何显示。控制台给了我三个错误:

  1. 获取http://localhost:3000/favicon.ico::ERR_INTERNET_DISCONNECTED
  2. 获取脚本时发生未知错误。
  3. 加载资源失败:net::ERR_INTERNET_DISCONNECTED

最后一个错误来自ngsw工作者。js。我不太清楚如何理解这些错误。我想也许一个新的服务人员正在尝试注册,但我不知道为什么会发生这种情况。。。

这是我的ng配置。请求的json文件:

{
  "index": "/index.html",
  "assetGroups": [{
    "name": "app",
    "installMode": "prefetch",
    "resources": {
      "files": [
        "/favicon.ico",
        "/index.html"
      ],
      "versionedFiles": [
        "/*.bundle.css",
        "/*.bundle.js",
        "/*.chunk.js"
      ]
    }
  }, {
    "name": "assets",
    "installMode": "lazy",
    "updateMode": "prefetch",
    "resources": {
      "files": [
        "/assets/**"
      ]
    }
  }]
}

任何与此有关的帮助将不胜感激!谢谢大家

使现代化

所以我注意到,当我转到localhost:3000而服务器不运行时,我会得到错误:

Uncaught (in promise) Error: Response not Ok (fetchAndCacheOnce): request for http://localhost:3000/assets/images/background-silver-grainy.jpg returned response 504 Gateway Timeout

我还得到了错误:

Failed to load resource: the server responded with a status of 504 (Gateway Timeout)

从我所有的资源

更新2

我一直在测试这个项目,使用node为一个express应用程序提供服务,该应用程序将所有请求定向到位于dist文件夹(在运行ng build--prod之后生成)中的angular应用程序。我决定在一个简单的http服务器上测试它。我还发现,直接重新加载会破坏我的服务人员,但如果我导航到另一个页面,然后返回到原始页面,服务人员就会工作(奇怪,但与此问题无关)。

我仍然无法让服务人员与express一起工作。。。

共有1个答案

谭志用
2023-03-14

*首先,服务工作者只在--prod构建上工作。

*其次,不能通过ng serve为服务人员提供服务,在您完成
ng build--prod之后,您需要使用不同的服务器为您的应用程序提供服务,如:

1-npm安装-g http服务器//全局安装http服务器
2-cd dist
3-http服务器-p 4200
4-在本地主机上打开浏览器:4200

*第三,也是最重要的一点,您必须在浏览器中启用缓存,如果已选中,请取消在开发工具中选中“禁用缓存”。

这是您的应用程序,所有内容都从服务人员脱机加载

 类似资料:
  • 我试图将PWA添加到项目中,但未成功。服务工作者不会缓存服务器请求。请求地址未添加到缓存存储中。因此,脱机模式不起作用。 项目配置: vue水疗中心 使用axios库向服务器发出的请求 服务器响应不包含缓存控制标头 pwa是使用标准vue插件实现的:vue/cli插件pwa vue中的PWA配置。配置。js: 还有这个:浏览器中的开发者控制台-

  • 在Chrome中,我的react service worker(使用CRA创建)被永久缓存并服务于旧版本。硬重新加载不会改变任何东西。如果我在开发工具中手动选择bypass for network来修复问题,但显然这不是一个适用于客户端的解决方案。我们的应用程序由Apache提供。基本上,我想知道在这种情况下指定

  • 我正在尝试制作背景全尺寸图像为每个幻灯片幻灯片在OpenCart。正如我所看到的,OpenCart使用Swiper来创建这个滑块。以下是我的的外观: 正如我所假设的,应该覆盖整个背景。但尽管如此,结果是: 看起来背景图像是试图适合在块只有顶部和底部的角。有什么我遗漏的吗?

  • 我正在开发一个渐进式web应用程序,目的是缓存所有离线使用的资产。这是我的服务人员 无论我是否在线,服务工作人员都无法缓存一些资产(在本例中bundle.js),并破坏了我的缓存优先系统,即使我在注册工作人员时记录了一条成功消息。 https://postimg.org/gallery/2yo1ig35y/

  • Ths是我的服务班 }

  • 我使用Spring缓存抽象使用Ehache作为缓存提供程序。我试图将缓存操作附加到Spring JPA事务,但无法这样做。 即使事务失败/回滚缓存放发生。 配置, springcache-abs-ehcache。xml, 雇员安置处, 事务方法, 测试用例(调用者), 测试应该成功,也就是说,如果事务在该方法中回滚,Spring不应该将数据放入方法中的缓存中。但是,即使事务失败,Spring也会将