我在四月为我的公司制作了一个HTML5"webapp",此时,我能够放置在iPhone和iPad的主屏幕上,并将其保存为用于离线观看的书签(Android和BB,但是那些不存在问题).
现在,6个月后,我尝试加载页面,而对于我的iPhone和iPad,主屏幕按钮将不会加载,但书签仍然可用.
在没有信号时是否存在阻止主屏幕按钮加载的故障?
(是的,我知道多年前有问题/答案,但我正在寻找更新的答案)
这是我的清单:
CACHE MANIFEST
#v1.3
CACHE:
nyipad.css
nymobile.css
expoLogo.png
schedule.jpg
contact.jpg
fav.png
Run Code Online (Sandbox Code Playgroud)
就像我说的那样,这可以与Android,BB和iOS书签一起使用,并且只能在iOS主屏幕上失败.
我正在为一个网站构建一个想法,该网站将为某些目的使用HTML5离线应用程序缓存.该网站将使用Python和Flask构建,这就是我的主要问题所在:我第一次使用这两个,所以我很难让清单文件按预期工作.
问题是我从清单文件中包含的静态文件中获取404.清单本身似乎正确下载,但它指向的文件不是.这是在加载页面时在控制台中吐出的内容:
Creating Application Cache with manifest http://127.0.0.1:5000/static/manifest.appcache offline-app:1
Application Cache Checking event offline-app:1
Application Cache Downloading event offline-app:1
Application Cache Progress event (0 of 2) http://127.0.0.1:5000/style.css offline-app:1
Application Cache Error event: Resource fetch failed (404) http://127.0.0.1:5000/style.css
Run Code Online (Sandbox Code Playgroud)
错误在最后一行.
当appcache失败一次时,它会完全停止进程,并且脱机缓存不起作用.
这就是我的文件结构:
这是offline-app.py的内容:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/offline-app')
def offline_app():
return render_template('offline-app.html')
if __name__ == '__main__':
app.run(host='0.0.0.0', debug=True)
Run Code Online (Sandbox Code Playgroud)
这是我在offline-app.html中的内容:
<!DOCTYPE html>
<html manifest="{{ url_for('static', filename='manifest.appcache') …Run Code Online (Sandbox Code Playgroud) 我有一个想要加载和处理图像的应用程序。浏览器要求图像要么与应用程序起源相同,要么图像响应允许跨域访问。我的图像是通过CDN(AWS S3)提供的,它们被配置为Access-Control-Allow-Origin在请求带有期望的Origin标头时提供正确的响应标头:
GET /image.png HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate, compress
Host: <aws host url here>
Origin: localhost:5000
HTTP/1.1 200 OK
Accept-Ranges: bytes
Access-Control-Allow-Methods: GET, HEAD
Access-Control-Allow-Origin: *
Cache-Control: max-age=315360000, no-transform, public
Content-Length: 3333
Content-Type: image/png
Server: AmazonS3
Vary: Origin, Access-Control-Request-Headers, Access-Control-Request-Method
Run Code Online (Sandbox Code Playgroud)
这可以正常工作,除了我的应用还具有脱机运行的额外要求。为此,我在应用程序缓存清单中列出了CDN资产网址:
CACHE MANIFEST
CACHE:
http://<host url here>/image.png
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,一旦从应用程序缓存中加载了资产,我就开始Cross-origin image load denied by Cross-Origin Resource Sharing policy 出现错误。
我已经了解到Chrome应该与缓存填充请求一起发送appcache清单来源,但是根据我在中的粗略探索chrome://net-internals,在我看来,这似乎没有发生。
这chrome://net-internals/#events是发出缓存填充请求时看到的内容:
HTTP_TRANSACTION_SEND_REQUEST_HEADERS
--> GET /image.png HTTP/1.1
Host: …Run Code Online (Sandbox Code Playgroud) google-chrome application-cache cross-domain cors html5-appcache
我正在研究在Aurelia中构建渐进式Web应用程序的技术,其中包含适用于主流浏览器的离线功能.服务工作者似乎是资产缓存的首选选项,但在Safari(目前是Edge)中缺乏支持.如果他们不受支持,是否可以使用服务工作者回退appcache?如果有appcache清单和服务工作者安装,应用程序将如何运作?
offline web html5-appcache service-worker progressive-web-apps
请解释.appcache文件中的FALLBACK部分.offline.html应包含哪些内容.CACHE SECTION和FALLBACK SECTION之间有什么区别.我能够理解Cache部分可能包含css和js文件,但是回退部分的用途是什么.
当我在demo.appcache中给出类似下面的内容时
CACHE:
style.css
script.js
NETWORK:
*
FALLBACK:
Run Code Online (Sandbox Code Playgroud)
这是否意味着排除style.css和script.js所有其他文件需要网络连接?
请解释
我有一个与CHROME和SAFARI一起使用的HTML5页面,但是使用Internet Explorer 11它不起作用,根据http://manifest-validator.com/,我的缓存清单是有效的,我非常沮丧......
这是AppCache清单的粘贴:

#version 1.1 12-20-2013
CACHE:
#images
imgs/enc1.png
imgs/logo-izq.png
#internal HTML documents
index.php
#style sheets
css/css.css
css/jquery-ui-1.10.3.custom.min.css
#style sheet images
css/images/animated-overlay.gif
css/images/ui-bg_flat_0_aaaaaa_40x100.png
css/images/ui-bg_flat_75_ffffff_40x100.png
css/images/ui-bg_glass_55_fbf9ee_1x400.png
css/images/ui-bg_glass_65_ffffff_1x400.png
css/images/ui-bg_glass_75_dadada_1x400.png
css/images/ui-bg_glass_75_e6e6e6_1x400.png
css/images/ui-bg_glass_95_fef1ec_1x400.png
css/images/ui-bg_highlight-soft_75_cccccc_1x100.png
css/images/ui-icons_222222_256x240.png
css/images/ui-icons_2e83ff_256x240.png
css/images/ui-icons_454545_256x240.png
css/images/ui-icons_888888_256x240.png
css/images/ui-icons_cd0a0a_256x240.png
#javascript files
js/jquery.min.js
js/offline.js
js/jquery-ui.min.js
#FORMULARIOS OFFLINE
1/4-offline.php
1/5-offline.php
1/6-offline.php
2/4-offline.php
2/5-offline.php
2/6-offline.php
3/4-offline.php
3/5-offline.php
3/6-offline.php
NETWORK:
*
FALLBACK:
js/online.js js/offline.js
online.php offline.php
/ offline_plantilla.php
Run Code Online (Sandbox Code Playgroud)
devel网站就是这个:
IE11上的错误如下:类似于:服务器上不存在该资源.

我想在运行时添加manifest属性,因此我可以控制何时下载Appcache.
例如:当用户正确登录应用程序时,
<html>
// page content
</html>
Run Code Online (Sandbox Code Playgroud)
变成:
<html manifest="myapp.manifest">
// page content
</html>
Run Code Online (Sandbox Code Playgroud)
无论如何我可以使用javascript,jquery或其他任何东西实现这一点吗?我想要的是控制何时有条件地下载Appcache.(我已经读过在iFrame中有另一个html.)
我想为登录页面设置条件,如果有互联网连接,则检查服务器数据库,否则检查localstorage.
我试图通过AJAX调用检查这个,但是当从appcache加载页面时,它总是告诉我我已连接到Internet.我对清单文件中的回退部分有所了解,但我不知道如何在我的情况下使用它.
离线时我应该怎么做才能处理事件?
我的小型HTML5应用程序需要在服务器上重新部署.我知道我只需触摸.appcache文件就可以在下次访问时让每个浏览器更新到最后一个版本的文件.
清单看起来像这样:
CACHE MANIFEST
#Version: 201209251353
index.html
apple-touch-icon.png
css/styles.css
data/dump.bin
img/background.png
img/sprites.png
js/core.js
js/jquery-1.8.1.min.js
vid/walkthrough.mov
Run Code Online (Sandbox Code Playgroud)
为了"触摸",我添加了一个评论(#Version :),我的意思是在内容更改时更新.
奇怪的是,一些文件已更新.并非所有,对于isntance,一位同事获得最新的core.js,但仍然显示一个旧的walkthrough.mov.
是否有一种简单的机制来强制更新缓存中的所有文件?
我在SO上找到了以下代码并将其包含在脚本中,希望它能提供帮助.不确定它是多么需要:(
// Application cache refresh
window.addEventListener('load', function(e) {
window.applicationCache.addEventListener('updateready', function(e) {
if (window.applicationCache.status == window.applicationCache.UPDATEREADY) {
// Browser downloaded a new app cache.
// Swap it in and reload the page to get the new hotness.
window.applicationCache.swapCache();
if (confirm('A new version of this site is available. Load it?')) {
window.location.reload();
}
} else {
// Manifest didn't changed. Nothing new to …Run Code Online (Sandbox Code Playgroud) 我正在使用应用程序缓存使我的网站也脱机工作.
我的清单看起来像这样,并使用以下内容嵌入<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-appcache ×10
html5 ×6
offline ×3
javascript ×2
caching ×1
cors ×1
cross-domain ×1
flask ×1
html ×1
jquery ×1
mime-types ×1
php ×1
python ×1
web ×1