我正在考虑构建一个支持离线的Web应用程序.
我正在考虑的架构如下:
Web服务器(远程)< - > Web服务器/缓存(本地)< - >浏览器/棱镜
我设想的这个模型的优点是:
对这个架构的任何想法?为什么我/我不应该使用它?我特别想找到成功/恐怖故事.
长版
笔记:
解决这个问题的常见解决方案并不适合某种方式.这是对每个的简短分析.齿轮/ HTML5:
Adobe AIR:
我的要求是:
我正在开发一个可以在离线模式下使用移动Safari的网站.我可以将它标记到主屏幕并从那里加载它.但是,一旦从主屏幕打开,点击某些链接将跳出应用程序并在移动游猎中打开 - 尽管我在所有链接点击上阻止了默认()!
该应用程序绑定该<body>级别的onclick事件处理程序.使用事件委派,它捕获任何链接上的任何点击,查看其href(例如'help'或'review'),并动态调用javascript模板并更新页面.事件处理程序在事件对象上调用preventDefault() - 对于某些可用的链接,并使用模板输出更新页面.但是,对于在输出模板结果之前导致对本地数据库命中的链接,链接将在移动safari中打开.
在桌面游侠中,即使我处于离线状态,所有链接都可以正常工作 - 某些特定的移动游猎正在发生.
有关为什么某些链接可以脱机工作而不是其他链接的任何想法?清单文件中没有列出所讨论的链接URL,但由于阻止了链接操作,因此它们不应该(不应该).
还有一些奇怪之处:*一旦我点击一个加载在移动版Safari中的链接,即使我离线,这些相同的链接现在也可以工作,并且填充了数据库中的数据的模板可以正常工作.换句话说:从主屏幕打开时链接失败,但不是从移动safari离线内部失败*更改链接以删除数据库命中(用模拟数据库结果填充模板)解决问题,并且可以单击链接在主屏幕的应用程序中.
safari offline web-applications offline-mode offline-caching
我意识到在这个主题上还有一些其他的问题,一般的共识是使用你选择的语言来操纵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的否定词:
现在,我想知道的是:
编辑:有或没有XSL,CSS和JQuery将是我们开发的解决方案中非常重要的一部分.一般整理(草率的!)
问题是:你有一个压缩的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分布只包含从主要仓库中拉出必要插件所需的最低限度,并且如果没有看到主回购至少一次就不能完全正常运行.
我不知道怎么问这个问题.我们正在运行SQL Server 2008 R2.我不是管理员,而是程序员.我需要编写一个应用程序,在晚上更新一些数据库的东西.我将设置一个标志来禁用对数据库的登录,但是我想让除了我之外的任何人都无法使用特定的数据库,即使有人已经登录到数据库.我的程序将作为批处理文件每晚运行,可能具有管理员权限.
我期望生成类似SQL命令脚本的东西.我可以使数据库脱机,除了我需要自己修改它.不确定处理此问题的最佳方法.
我正在寻找的是一种在离线Web应用程序中"上传"图像的方法.我希望有一种方法可以将所选图像存储在缓存中,然后在再次访问Internet时上传它.这样的事情可能吗?
我正在使用应用程序缓存使我的网站也脱机工作.
我的清单看起来像这样,并使用以下内容嵌入<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错误)?
我想使用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) 我正试图在用户离线时提醒他们,并显示一条简单的消息.我正在使用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)
我正在尝试使用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: '© <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: '© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);
Run Code Online (Sandbox Code Playgroud)
信息:我对传单和编程有点
陌生,在过去的两天里,我非常感激Thanx!
offline ×10
offline-mode ×3
html5 ×2
javascript ×2
android ×1
architecture ×1
build ×1
database ×1
file-upload ×1
gis ×1
html ×1
java ×1
leaflet ×1
map ×1
maven ×1
offlineapps ×1
safari ×1
xml ×1
xslt ×1