我有一个 Electron 应用程序,它使用函数 mainWindow.loadURL('http://www.example.com/index.html') 从远程服务器检索应用程序文件(.html 和 .js)
如果用户与互联网的网络连接离线或断开连接,就会出现问题。
electron有没有办法缓存html和js文件,如果用户离线,electron会自动从缓存中加载。
我尝试使用 HTML5 应用程序缓存和 webpack 插件 https://github.com/NekR/offline-plugin但这些似乎不起作用。
最佳答案
我看到这是一个老问题,但我在进行半相关搜索时偶然发现了这个问题,现在根本没有答案,所以我会提供一个:
忽略这个问题的 Electron 特定性质,网络标准的方法是使用 Service Worker。这里有一些文档:
- 来自 MDN 的“使用服务 worker ”- https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers - 这是引用资料。
- “将 Service Worker 和离线添加到您的 Web 应用程序中”- https://developers.google.com/web/fundamentals/codelabs/offline/ - 这是一个教程。
- “使用 Service Worker 创建离线优先的 Web 应用程序”- https://auth0.com/blog/creating-offline-first-web-apps-with-service-workers/ - 这也是一个教程。
我认为这将是解决这个问题的最直接方法,即使在 Electron 中也是如此。 (这里 Electron 的一个优势是你有一个单一的、已知的浏览器来完成这项工作,但我认为你正在尝试做的事情完全符合 Service Workers 旨在解决的问题空间。)
也就是说,我认为 Sayam 的评论/问题是有效的——如果这个 html/js 是您的 Electron 应用程序的实际内容,并且假设它不会经常更改,您可以(也许应该)将它与应用程序本身。然后您不需要为离线支持做任何特别的事情(只要 html/js 不需要基于网络的资源),并且对该代码的更改将作为应用程序更新进行部署。
我个人认为每周一次是这种方法适用的最大更新频率。如果应用程序每月自动更新 2 或 3 次,我不会感到困扰,但如果我有这个选择,我想我会卸载每周更新 2 或 3 次的应用程序。
可能还有一些 electron 和/或 node 模块可以解决这个问题空间,但我从来没有费心去寻找,因为上面的两个选项之一似乎总是适合我。
关于javascript - ElectronJS - 从远程服务器缓存 HTML 和 JS 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41346254/