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