使 Angular 个 Web 应用程序可离线使用

Make Angular Web App available offline

我正在努力解决有关寻找使 Angular / C# 应用程序可离线使用的解决方案的一些细节。
我的想法是使用 upup.js the get the business logic for the SPA in Angular available offline. upup.js uses service workers to do so. I would store the data required for the offline app using angular-localForage ,它使用 IndexedDB 并回退到 WebSQL 和 localStorage 以防万一。
问题是,我也必须让文件和图像离线可用,而不需要用户访问他们正在使用的页面,我担心最大配额。我可以使用 upup.js 存储它们并将这些文件添加为资产,或者使用 angular-localForage 将它们存储为 blob。如果我被正确告知,IndexedDB 现在应该是无限的?不过,我找不到服务工作者的任何最大配额,因为 upup.js 解决方案会使用。 AppCache 已被弃用,所以我不会使用它......或者我理解的东西完全错误,或者还有另一个更好的解决方案?无论如何,问题是:

TL;DR:为 AngularJS 离线应用程序存储文件的更好方法是什么:angular-localForage (IndexedDB etc.) or a Service Worker (upup.js)以及每个解决方案的最大配额是多少?或者有更好的解决方案吗?

在我看来,Service Worker (SW) 比传统的本地存储要好。加上SW也可以使用indexedDB。

对于实现来说,是非常依赖的。您的应用程序结构如何,您的 angular 应用程序使用了哪些前端技术,您使用 SW 的主要目标是什么...?


1。传统的 JS 加载,您可能会将所有 JS 文件合并为一个...就像 app.js 包含所有内容。

而且您也不关心推送通知,也不关心 SW 提供的任何其他很酷的功能。

=> 对于这种情况,upup.js 似乎最适合你。

注意 : 请注意 upup.js 试图自行注册 SW,因此它可能会阻止或复杂化您扩展 SW 功能的工作。


2。高级 AMD 用户,几乎所有的 JS 都被切成小块......比如 fooCtrl.jsbarCtrl.js 等......

你当然不想配置 100 多个 JS 文件,而且你会加载很多 html 模板。

=> 在这种情况下,我建议您使用 sw-toolbox 。 Google 制作的一个非常强大且重量轻的工具。一开始,如果您还不熟悉 SW 概念,您在为您的站点设置它时会遇到一些麻烦(但不会超过一天,因为您是高级 JS 开发人员)

一切都配置好后,一切都变得那么简单。例如,这就是我在网站中缓存所有静态内容的方式。

self.toolbox.router.get(/(.js|.css|.png|.jpg|.json|.html)/, self.toolbox.fastest);

3。你不关心前端有什么样的技术。你只是对SW感兴趣。

=> 只需选择 sw-toolbox 即可真正节省基本配置时间。而如果你想扩展SW的用途,你可以随意扩展。