可以在(HTML5)浏览器中使用离线模式应用程序吗?

可以在(HTML5)浏览器中使用离线模式应用程序吗?,html,offline-mode,Html,Offline Mode,是否可以在浏览器内部构建应用程序?申请是指: 1当浏览器和远程应用程序服务器之间存在连接时(联机模式): 应用程序以典型的基于web的模式运行 应用程序在脱机存储中存储必要的数据,以便在脱机模式下使用(2) 当应用程序从脱机模式恢复到联机模式时,应用程序将同步/推送数据(在脱机模式下捕获)返回到服务器 2当浏览器和远程应用程序服务器之间没有连接时(脱机模式): 应用程序仍将运行(javascript?) 应用程序将向用户显示数据(离线存储) 应用程序可以接受用户的输入(并在脱机存储中存储/

是否可以在浏览器内部构建应用程序?申请是指:

1当浏览器和远程应用程序服务器之间存在连接时(联机模式):

  • 应用程序以典型的基于web的模式运行
  • 应用程序在脱机存储中存储必要的数据,以便在脱机模式下使用(2)
  • 当应用程序从脱机模式恢复到联机模式时,应用程序将同步/推送数据(在脱机模式下捕获)返回到服务器
2当浏览器和远程应用程序服务器之间没有连接时(脱机模式):

  • 应用程序仍将运行(javascript?)
  • 应用程序将向用户显示数据(离线存储)
  • 应用程序可以接受用户的输入(并在脱机存储中存储/追加)
这可能吗?如果答案是肯定的,那么是否有任何(Ruby/Python/PHP)框架正在构建


谢谢

是的,这是可能的

  • 您需要用Javascript编写应用程序,并以某种方式检测浏览器是否处于脱机模式(最简单的方法是偶尔轮询一次服务器)。(编辑:有关检测脱机模式的更好方法,请参见注释)

  • 确保应用程序只包含静态HTML、Js和CSS文件(或者在脚本中手动设置缓存策略,以便浏览器在脱机模式下记住它们)。页面的更新是通过JS DOM操作完成的,而不是通过服务器(ExtJS之类的框架将在这里帮助您)

  • 对于存储,请使用诸如PersistJS()之类的模块,该模块使用浏览器的本地存储来跟踪数据。恢复连接后,请与服务器同步

  • 您需要预缓存所使用的图像和其他资产,否则,如果您以前未使用它们,它们将在脱机模式下不可用

  • 同样:应用程序的大部分需要使用javascript,如果无法访问服务器,PHP/Ruby/Python框架对您的帮助很小。服务器可能保持尽可能简单,一个类似REST的AJAX API来存储和加载数据


看看谷歌齿轮。尽管他们已经被HTML5淘汰了。然而,似乎作为HTML5推出的是Google Gears。

我也在寻找这个,我发现了abt。我还没试过呢

典型在线Web应用程序的用户只能在连接到Internet时使用这些应用程序。当他们离线时,他们无法再使用在线工具查看电子邮件、浏览日历约会或准备演示文稿。同时,本机应用程序提供了这些功能:电子邮件客户端在本地缓存文件夹,日历在本地存储事件,演示软件包在本地存储数据文件

MarkPilgrim(在线)的书中对使用HTML5技术编写离线web应用进行了很好的概述

注意:自从MarkPilgrim最初涉足HTML5以来,链接似乎已经关闭

现在可以在其他地方找到副本。

杰克·阿奇博尔德写了《离线食谱》。现代(2014年12月9日)和服务工人的良好方法:


2018年的答案是利用服务人员,构建一个进步的Web应用程序:

您可以使用navigator.onLine来测试浏览器是否为onlinenavigator.onLine在许多浏览器中都不能给出准确的值。例如,请参阅。@kpozin WebKit中的问题已修复,因此现在所有主要浏览器都支持Firefox navigator中的itin。只有当用户将浏览器设置为脱机模式时,即使在未连接的情况下,onLine才会返回false@CaptainkurO。您现在链接的页面显示:“由于Firefox 41在OS X和Windows上,该值将遵循实际的网络连接。”很显然,Firefox已经修复了这个问题。接下来的一个问题是:是否有任何现有的Javascript框架可以使所有这些都易于实现?