标签: offline

离线Web应用程序

我正在考虑构建一个支持离线的Web应用程序.

我正在考虑的架构如下:
Web服务器(远程)< - > Web服务器/缓存(本地)< - >浏览器/棱镜

我设想的这个模型的优点是:

  • 部署是基于Web的,具有此方法的所有优点
  • 启用离线
  • UI(html/js)同步是一个非问题
  • 数据同步主要是自动化的
    • 只要我保持在RESTful范式内
    • 我可以按要求打破这个,但手动同步在很大程度上仍然是手术
  • 本地Web服务器作为服务启动; 我可以运行任意代码,包括幕后数据同步
  • 我完全控制了数据(位置,没有大小限制,不可能在不知不觉中删除用户)
  • 具有扩展名的棱镜可以允许保持javascript封闭源

对这个架构的任何想法?为什么我/我不应该使用它?我特别想找到成功/恐怖故事.



长版

笔记:

  • 用户不是很了解计算机知识.例如,即使是表面上解释Gears如何运作也完全不可能.
  • 如果数据丢失,我将承担责任,即使它确实是用户的错误(缺少他删除机器上的随机目录)
  • 我可以要求用户在他们的机器上安装一些东西.它不必是100%基于Web和/或在沙箱中运行

解决这个问题的常见解决方案并不适合某种方式.这是对每个的简短分析.齿轮/ HTML5:

  • 无法控制数据,用户可以在没有任何警告的情况下删除
  • 无法控制数据的位置(跨浏览器和平台不统一)
  • 用户需要在浏览器中打开应用程序才能实现同步; 没有自动的幕后同步
  • 不同浏览器的处理方式不同,单个机器上没有统一的数据视图
  • 磁盘空间有限
  • 同步是完全手动的,基于sql的存储使这很痛苦(如果sql表被完全复制会更简单但在我的情况下不是这样).这是一个非常复杂的问题.
  • 我的代码几乎完全是开源的(html/js)

Adobe AIR:

  • 以上的一些
  • 没有服务器端包括(!)
  • 可以在后台运行,但不能无窗口
  • 手动同步
  • 网络缓存似乎很复杂
  • 感觉就像一个kludge不知何故,我在一些机器上安装时遇到了麻烦

我的要求是:

  • 基于网络(必须).出于多种原因,例如在用户之间共享数据.
  • 离线(必须).应用程序必须完全可脱机使用(有一些罕见的例外).
  • 快速发展(必须).我是一个单一的开发者,与那些拥有更多业务资源的玩家对抗.
  • 封闭源(很高兴).是的,我了解开源模型.但是,在这一点上,我不希望竞争对手太容易复制我.再一次,他们拥有更多的资源,所以他们可以用我的努力工作,并在比我自己更短的时间内做得更好.显然,他们仍然可以复制我开发自己的代码 - 这很好.

offline

3
推荐指数
1
解决办法
3787
查看次数

防止离线iphone webapp在Safari中打开链接

我正在开发一个可以在离线模式下使用移动Safari的网站.我可以将它标记到主屏幕并从那里加载它.但是,一旦从主屏幕打开,点击某些链接将跳出应用程序并在移动游猎中打开 - 尽管我在所有链接点击上阻止了默认()!

该应用程序绑定该<body>级别的onclick事件处理程序.使用事件委派,它捕获任何链接上的任何点击,查看其href(例如'help'或'review'),并动态调用javascript模板并更新页面.事件处理程序在事件对象上调用preventDefault() - 对于某些可用的链接,并使用模板输出更新页面.但是,对于在输出模板结果之前导致对本地数据库命中的链接,链接将在移动safari中打开.

在桌面游侠中,即使我处于离线状态,所有链接都可以正常工作 - 某些特定的移动游猎正在发生.

有关为什么某些链接可以脱机工作而不是其他链接的任何想法?清单文件中没有列出所讨论的链接URL,但由于阻止了链接操作,因此它们不应该(不应该).

还有一些奇怪之处:*一旦我点击一个加载在移动版Safari中的链接,即使我离线,这些相同的链接现在也可以工作,并且填充了数据库中的数据的模板可以正常工作.换句话说:从主屏幕打开时链接失败,但不是从移动safari离线内部失败*更改链接以删除数据库命中(用模拟数据库结果填充模板)解决问题,并且可以单击链接在主屏幕的应用程序中.

safari offline web-applications offline-mode offline-caching

3
推荐指数
1
解决办法
4298
查看次数

XSLT是否值得投入时间,是否有任何实际的替代方案?

我意识到在这个主题上还有一些其他的问题,一般的共识是使用你选择的语言来操纵XML.但是,这种解决方案并不适合我的情况.

首先,项目的范围:我们希望开发独立于平台的电子学习,目前,它是一堆HTML页面,但随着它们的成长和发展,它们变得难以维护.我们已经有大约30个模块,每个模块有10-30个HTML页面,而且这个模块一直在增长.

想法:拥有一个XML文件+ Schema pre eLearning Module,然后生成一些XSLT文件,将XML处理成电子教学模块.通过XSLT将XML转换为HTML.

为什么:我们希望灵活性能够轻松地重新格式化内容我认识到CSS在这里是一个可行的替代方案,特别是在视觉上改变了外观,但我们可能需要比这更多的功能并进行重组页面.如果我们决定改变页面布局或功能,我猜测改变"共享"XSLT文件比更新HTML文件更容易.

根据一些"参数",我们可以输出截然不同的页面布局/结构,超出CSS的范围.XSLT可以采用QueryString参数吗?不确定..

现在,所有这些必须是平台无关的,并且能够"离线"运行,即没有服务器为HTML提供动力,因此服务器端技术是不可能的(C#,PHP)

我到目前为止已经读过XSLT的否定词:

  • 高架?不完全确定为什么...是否需要转换为HTML的计算能力?
  • 很难学
  • 更好的选择

现在,我想知道的是:

  • 这个"离线"实际上有没有可行的替代方案?
  • 我是以正确的方式去做的
  • 你们有什么建议或替代方案吗?

编辑:有或没有XSL,CSS和JQuery将是我们开发的解决方案中非常重要的一部分.一般整理(草率的!)

html xml architecture xslt offline

3
推荐指数
1
解决办法
800
查看次数

有史以来第一个maven构建是否可以脱机?

问题是:你有一个压缩的java项目分布,它取决于几个库,如spring-core,spring-context,jacskon,testng和slf4j.任务是使事物可以脱机构建.可以使用所有必需的库jar创建项目范围的本地存储库.

我试过这样做.看起来即使项目包含javac和运行时所需的jar,构建仍然需要Internet访问.Maven仍然会潜入网络以获取构建所需的大部分自己的插件.我假设maven是使用空的.m2目录运行的(因为这可能是构建的第一次启动,可能是脱机构建).不,我不能在项目本身分发完整的maven repo快照,因为这看起来对我来说完全是混乱.

一点背景:更广泛的任务是创建Windows便携式JDK/IntelliJ Idea分布,它沿着项目进行,并允许在IDE内部进行一些最小的Java编码/运行,只需最少的配置和最少的Internet访问.该项目面向计算机课程的学生,对系统配置几乎没有控制权.最好保持控制台构建系统在离线模式下完好无损,但我想maven过分依赖于网络,所以我不得不放弃它以支持好老蚂蚁.

那么,您的意见是什么,我们可以完全在离线模式下移动第一个maven构建吗?我的直觉是,初始maven分布只包含从主要仓库中拉出必要插件所需的最低限度,并且如果没有看到主回购至少一次就不能完全正常运行.

java offline build offline-mode maven

3
推荐指数
1
解决办法
2590
查看次数

从SQL Server引导用户

我不知道怎么问这个问题.我们正在运行SQL Server 2008 R2.我不是管理员,而是程序员.我需要编写一个应用程序,在晚上更新一些数据库的东西.我将设置一个标志来禁用对数据库的登录,但是我想让除了我之外的任何人都无法使用特定的数据库,即使有人已经登录到数据库.我的程序将作为批处理文件每晚运行,可能具有管理员权限.

我期望生成类似SQL命令脚本的东西.我可以使数据库脱机,除了我需要自己修改它.不确定处理此问题的最佳方法.

database offline sql-server-2008-r2

3
推荐指数
1
解决办法
186
查看次数

是否可以在离线Web应用程序中上传图像?

我正在寻找的是一种在离线Web应用程序中"上传"图像的方法.我希望有一种方法可以将所选图像存储在缓存中,然后在再次访问Internet时上传它.这样的事情可能吗?

javascript html5 offline file-upload web-applications

3
推荐指数
1
解决办法
761
查看次数

应用程序缓存:不要在404上从appcache提供文件

我正在使用应用程序缓存使我的网站也脱机工作.
我的清单看起来像这样,并使用以下内容嵌入<iframe>:

CACHE:
favicon.ico
assets/css/style.css
assets/js/libs/zepto.js
assets/js/app.js

NETWORK:
*

FALLBACK:
/ offline.html
Run Code Online (Sandbox Code Playgroud)

当我切断互联网连接时,它按预期工作 - >所有内容都通过offline.html页面提供.
但刚才我发现每个404(例如服务器上从未存在的URL)也使用清单中的FALLBACK部分显示offline.html.

有没有办法区分离线(在这种情况下,offline.html是正确的选择)和服务器返回404(在这种情况下,我只是想显示404错误)?

html5 offline html5-appcache

3
推荐指数
1
解决办法
1530
查看次数

虚拟地图图块提供程序不起作用(未调用getTile)

我想使用Google Maps API v2,但仅在后台显示一个虚拟地图。这是我正在使用的PNG文件的示例,称为“ dummy_map_tile.png”。我将其放置在资产文件夹中名为“ images”的目录下。尺寸为256x256像素。还尝试了JPG类似文件。

我的虚拟地图图块:

这是我的虚拟地图图块提供程序的代码,当然应该可以离线使用:

public class DummyTileProvider implements TileProvider {

    protected Tile mDummyTile = null;

    public DummyTileProvider(Context context) {
        InputStream inputStream = null;
        ByteArrayOutputStream outputStream = null;
        try {
            String tileFilename = "images/dummy_map_tile.png";
            inputStream = context.getResources().getAssets().open(tileFilename);
            outputStream = new ByteArrayOutputStream();
            byte[] buffer = new byte[2048];
            int count;
            while((count = inputStream.read(buffer)) != -1)
                outputStream.write(buffer, 0, count);
            outputStream.flush();
            mDummyTile = new Tile(256, 256, outputStream.toByteArray());
        }
        catch (IOException e) {
            mDummyTile = null;
        }
        finally {
            if (inputStream != null) …
Run Code Online (Sandbox Code Playgroud)

android offline map

3
推荐指数
1
解决办法
978
查看次数

如何使用Offline.js在连接消失时提醒用户

我正试图在用户离线时提醒他们,并显示一条简单的消息.我正在使用Offline.js作为库(Offline.js网站).

我想写JS而不是使用Eager自动安装它.

这是我写的,但似乎没有用.有人可以帮我详细说明吗?

我在图书馆网站上找不到包含代码的示例.

Offline.options = {checkOnLoad: true, checks: {image: {url: 'http://www.vitaminedz.com/photos/49/02-49565-front-de-mer-a-oran.jpg'}, active: 'image'}}

Offline.check();
Offline.on('up', alert('up'));
Offline.on('down',alert('down'));
Run Code Online (Sandbox Code Playgroud)

JSFiddle Code + DEMO

javascript offline offline-mode offlineapps

3
推荐指数
1
解决办法
6425
查看次数

如何在L.tileLayer的传单地图中使用localhost TileServer GL?

我正在尝试使用Leaflet和Tileserver Gl制作离线地图

我正在尝试在我的应用程序中使用Tileing绘制地图的情况下加载Tileserver Gl tiles [哪个托管在我的斯里兰卡特定区域的本地系统中]。但是瓷砖没有加载,我无法弄清楚。将添加用于绘制我的地图的代码

使用以下代码在本地托管我的图块

npm install -g tileserver-gl-light
tileserver-gl-light sri_lanka.mbtiles
Run Code Online (Sandbox Code Playgroud)

在线工作图

L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
  attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);
Run Code Online (Sandbox Code Playgroud)

离线地图

哪个没有加载瓷砖

L.tileLayer('http://localhost:8080/data/v3/{z}/{x}/{y}.png', {
  attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);
Run Code Online (Sandbox Code Playgroud)

信息:我对传单和编程有点
陌生,在过去的两天里,我非常感激Thanx!

gis offline openstreetmap leaflet

3
推荐指数
1
解决办法
1995
查看次数