将应用程序图标另存为内部资产还是从远程存储提供?

时间:2018-10-25 11:13:35

标签: angular performance angular-cli progressive-web-apps angular7

我正在开发带有CLI Schematics(@ angular / pwa)的Angular 7购物清单应用程序PWA。

该应用程序将提供按手风琴内商品类型分组的购物图标(每个类别约10至20,每个类别2KB至6KB)。 PWA应用程序只能在手机上使用(仅出于上下文考虑,因为这没有区别)。

由于图标不会更改,因此我不确定在以下方法之间是否使用

  1. 将所有图标提供为内部资产
  2. 远程存储图像

(我将Firebase用作数据库,因此我正在考虑使用Firebase Storage)

第一种方法的好处是所有图标都可以立即使用,但是可以使应用程序的整体尺寸更大。另一方面,第二种方法将采用更多的惰性加载方法,并且仅下载请求的资产,然后将其本地缓存。缺点是下载图标的加载时间更长(至少是在第一次或缓存过期时)。

目前,我使用PWA延迟加载策略来解决第二个问题,但是我很想知道在这种情况下是否有更好的方法。

1 个答案:

答案 0 :(得分:0)

还有第三种方法,因为您只有移动客户端,这意味着您几乎可以肯定有服务人员。然后,您可以在服务工作者存储中本地缓存项目。这意味着,图标不会在用户第一次访问该网站时加载(或者您可以添加其中的一小部分子集),但是在您第一次请求图标时,它将被缓存,以及其他所有项将从现在的frmo类别中受益。

如果不是那样,我最好将它们存储为常规资产,而不是firedb项,然后设置适当的缓存控件。实际上,无论是否使用Service Worker,都应该正确设置缓存控件。

所以我的TL:DR;答案是:

  • [*]作为具有适当缓存控制的CDN上的静态资产存储
  • []使用服务程序使它们更快可用

(*)=>必填

这是一个已解决的问题,可能不值得将头撞在墙上,至少不会持续很长时间。使用推荐的方法,无论是否使用服务工作者,都不要在数据库中放置静态资产。

此外,还有一些要测试的东西,但是您可以执行以下操作以:  -将它们变成SVG(压缩效果更好)  -将其作为精灵发送