<!DOCTYPE HTML>
<html manifest="example.appcache">
<link rel="stylesheet" type="text/css" href="AppCache.css">
<meta charset="utf-8">
<title>Untitled Document</title>
</head>
<body>
<p>Test to make sure css is being cached</p>
<img src="large.jpg">
<script src="AppCache.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我的example.appcache文件有:
# v1 11/16/2011
AppCache.htm
AppCache.js
AppCache.css
large.jpg
Run Code Online (Sandbox Code Playgroud)
它第一次导航到页面时,它问道
本网站要求在您的计算机上存储数据以供离线使用.
当我离线Firefox并按下刷新时,jpg消失.
问:我需要做些什么来确保图像在本地缓存?
当我向运行jquery mobile的webapp添加appcache时,所有从我的服务器stoppet请求json文件的ajax调用工作.我的清单文件如下所示:
CACHE MANIFEST
CACHE:
index.html
scripts/jquery-1.7.1.min.js scripts/jquery.flot.min.js
scripts/jquery.flot.threshold.min.js
scripts/jquery.mobile-1.0.1.min.js
styles/jquery.mobile-1.0.1.min.css
styles/touchStyles.css
styles/styles.css
NETWORK:
index.appcache
dataFetchAndDraw.js
initJson
Run Code Online (Sandbox Code Playgroud)
其中initJson是其中一个无效的调用.我试图输入完整的地址(aaa:bbb:ccc:ddd:6565/initJson)也没有成功.
在我的.htaccess文件中,我只有这一行:
AddType text/cache-manifest .manifest
Run Code Online (Sandbox Code Playgroud) 按设计HTML5脱机支持(AppCache)可在客户端设备脱机或客户端设备联机且服务器可访问时工作.之后我缓存了应用程序并在浏览器(刷新它)中重新打开它,当设备无法访问互联网时,浏览器从AppCache加载应用程序.在这种情况下,浏览器不会尝试获取appcache清单(它知道我们处于脱机状态).
但是让我们考虑一下我的设备没有脱机的情况.它仍然有互联网连接.但是我的服务器坏了.可能有许多不同的原因(硬件故障,AppPool停止,IIS限制,DNS错误等).在这种情况下,当我在浏览器中打开缓存的应用程序时,它将尝试获取appcache清单并获得404错误(未找到).然后浏览器清除应用程序的AppCache!因此,在下一次运行时,它不会从AppCache加载它并显示404错误"page".没有更多的离线工作.
对我来说,离线模式功能取决于服务器无法访问的原因看起来很奇怪.我为什么要关心用户(没有互联网连接或服务器关闭)?
所以我的问题是:做任何人知道什么办法可以使应用程序在工作时的设备是在线,但它的服务器不可用?
理想情况下,我应该能够捕获window.applicationCache的错误事件并告诉它"它没关系,请继续使用缓存,不要废弃它".
我们在Android 4.0,4.1和4.2上有内置浏览器的问题(我们没有更低的东西可以测试).问题是ajax调用在第一次加载时会完美运行,你可以根据需要多次按下运行Ajax按钮,这样就可以了.您可以断开互联网连接,它将正常工作.但是如果您退出(完全确保它不仅仅在后台运行)浏览器然后重新启动它,它将在加载时失败并按下按钮.如果您在线或离线并不重要.从ajax调用返回的错误是"错误",状态= 0且readyState = 0.
成功后,您将收到一条消息,说"从Ajax调用中重新启动"状态= 200且readyState = 4.
代码可以在我们在Android Chrome,Firefox和Opera上测试过的所有其他浏览器上找到.在IOS 5和6上它可以工作,我们可以找到每个桌面浏览器.有没有我遗漏的内容或者我们在内置浏览器中发现了一个错误.任何有关这方面的帮助都会受到欢迎,特别是如果它只是我做过的蠢事.
我们已经创建了一个测试脚本,可以很好地演示这个问题,我将它附加到此消息的底部.
谢谢
蒂姆
test.php的
<?php
function displayPage() {
?>
<!DOCTYPE html>
<html manifest="test.manifest" debug="true">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1" >
<title>test</title>
<script type="text/javascript" src="jquery-1.9.0.min.js"></script>
<script type="text/javascript">
function runAjaxGet() {
var XMLHttpRequest = $.ajax({
url: "test.php",
dataType: "json",
data: "test=test",
traditional: "true",
success: function( responseData ) {
alert('good\n responseData: '+responseData+ '\n res:' + XMLHttpRequest.responseText +'\n readyState: '+ XMLHttpRequest.readyState + '\n Status: '+XMLHttpRequest.status );
console.log(XMLHttpRequest);
},
error: function (xhr, ajaxOptions, …Run Code Online (Sandbox Code Playgroud) 我已经搜索了很长时间以便在HTML5中存储大量图像,或者在本地存储并显示它们.
该应用程序是一个产品订购和目录,如电子商务网站,但对于批量订单,而不是最终客户,每个图像是一个产品,这就是为什么需要有40k图像.需要来自销售人员可以在离线模式下使用平板电脑数天,数周,并且只有在连接或想要同步后才与ERP同步.
每个销售人员都有一个专用的Android平板电脑Tegra3四核,32Gb用于该应用程序.但该应用程序还支持桌面上的iPad和Chrome.
但是我遇到了以下限制:
所以也许我错过了另一种方法来做到这一点?
是否有HTML5方式存储大量图像以供离线查看?移动设备不支持FileSystem API,并且能够在移动设备上运行是一项强烈要求.
在Internet Explorer 10中,如何手动清除网页的应用程序缓存?
我在使用AppCache时遇到了一些重大问题.
我有一个单页面应用程序(使用Page.js使用真实URL 并在页面加载时从服务器加载HTML,(dispatch:false)
它在Bode.js上运行,特别是它是一个Sails.js应用程序.
我在布局的HTML标签中有一个清单文件.清单文件已经过重复测试,所有内容都会检出.它在Chrome中完美运行.即使在Safari中,它也会在检查器中正确显示,并且具有文件中列出的资产列表.到现在为止还挺好.
但是,在脱机时,Safari无法加载除HTML文档本身之外的任何内容.所以我基本上只看到一个没有样式的标题列表.控制台显示了一堆404.因此,即使它正确读取清单文件,它也不会缓存任何内容.
Firefox甚至没有检测到清单文件,只是看起来像它不存在一样工作.
iOS7上的Safari表现得像Firefox,在离线时没有显示任何内容.
任何有明白想法的人为什么会这样?
我已经迷上了两天了,这让我发疯了.希望有人可以对这件事情发表一些看法.
我正在跑步: 小牛队(MAC),Safari Versie 7.0.3(9537.75.14)
我index.php看起来像:
<!DOCTYPE HTML>
<html manifest="manifest.php">
<head>
<title></title>
<meta charset="UTF-8" />
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body>
<p>The time is <time><?php echo time(); ?></time></p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我style.css看起来像:
html, body
{
margin : 0;
padding : 0;
font-size : 100%;
font-family : "Helvetica Neue", Helvetica, Verdana, Arial, sans-serif;
}
p
{
text-align : center;
}
p time
{
color : red;
}
Run Code Online (Sandbox Code Playgroud)
我manifest.php看起来像:
<?php header('Content- Type: text/cache-manifest'); ?>
CACHE MANIFEST …Run Code Online (Sandbox Code Playgroud) 背景:
我已经建立了一个甚至可以脱机工作的网页.本页面遵循"AppCache"指南.
我的网络浏览器是HP Windows 8平板电脑上的IE11.
当我点击物理服务器(Oracle weblogic)上页面的直接URL时,我就可以访问该页面了.即使我关闭网络连接,也可以通过IE11浏览器访问同一页面.
问题:
当我通过公司网关(F5和OHS)访问同一页面时,当有网络连接时,该页面可用.但是一旦我关闭了网络连接,我就会看到" 你没有连接到网络 "页面.
当我连接回网络并尝试访问同一页面时,我可以看到我的页面请求的资源都是从本地缓存浏览器提供的(我通过IE开发人员工具检查网络).
我不确定发生了什么.即使没有连接,我也想访问我的页面.
注意:
我的网页只能通过网关使用"HTTPS"访问.我直接访问服务器的地方使用'HTTP'
internet-explorer offline-caching offlineapps html5-appcache internet-explorer-11
我们正在开发一个支持所有移动设备形式的单页RWD Web应用程序.我们想要
我们可以使用AppCache,HTML5存储来获取离线功能吗?如果我们使用哈希来更改地址栏中的导航,则整个页面刷新问题也不存在.
正在浏览Stackoverflow中的一些旧帖子.离线iOS网络应用程序:加载我的清单,但不能脱机工作
这篇文章的日期可以追溯到2011年.2017年,我们能否支持
html5-appcache ×10
html5 ×4
offlineapps ×2
android ×1
browser ×1
caching ×1
cordova ×1
ios ×1
javascript ×1
jquery ×1
json ×1
node.js ×1
page.js ×1
sails.js ×1