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