我的应用程序为用户创建的用于电子学习的 HTML 页面包提供服务,也称为 SCORM 包,我正在努力使它尽可能快。
在 iframe 中逐页加载非常慢,因为页面可能包含高分辨率图形、动画、音频、视频等。
不幸的是,预加载这些页面非常困难,因为它们通常对 onLoad() 事件使用react以启动动画和交互。
如果不使用小程序或扩展,是否可以下载用户包并将其“在浏览器中”提供给应用程序?
最佳答案
随着基于 Backbone.JS、Angular、Ember 等构建的胖客户端的出现,这是一个很常见的任务。客户端从服务器请求数据(通常是 JSON)、媒体等,而不是预渲染的 HTML ,并在客户端进行渲染和资源管理。如果您想采用这种方式,以便您可以按照指定的方式支持灵活的离线模式,您通常需要在应用程序缓存 list 中使用一组通用加载器和工具来加载更具体的(特定于用户,特定于类(class),等)页面加载资源。
您的用户第一次打开您的应用程序时,它应该处于在线模式,并且您的应用程序将需要请求它需要的特定资源才能很好地离线运行并将它们存储在客户端存储中(localStorage、indexedDB 或其他类似的东西)试图取代 - WebSQL 和文件系统。网络上有很多关于如何使用这些 API 的资源。)。此步骤也可以是增量式的,而不是大量下载数兆字节的数据。
下次您的用户打开您的页面时,您的应用甚至可以在调用服务器之前尝试从客户端存储加载它需要的所有资源。如果它缺少某些资源,或者如果它需要获取更新版本的资源,或者当然如果您需要写入服务器,它只需要调用服务器。如果您在第一次将所需的所有资源加载到客户端存储中做得很好,它可以在离线模式下正常工作。
关于javascript - 是否可以在 javascript 中离线提供用户创建的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25090380/