问题标签 [html5-appcache]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
html - 如何使用 HTML5 的应用缓存(appcache)来缓存动态页面?
我有想要离线使用的动态页面。我想使用 HTML5 的应用程序缓存来做到这一点。问题是我不知道页面的所有资源(JavaScript 和 CSS),因为这些部分是动态的。
我有一个如下所示的 manifest.appcache 文件:
但这似乎只缓存页面的 HTML,而不是页面的其余资源。有没有办法做这样的事情?
如果没有,是否可以使用 JavaScript 以编程方式设置缓存(我想我可以循环通过链接和脚本标签)?
windows-authentication - Windows/NTLM 身份验证的应用程序缓存清单文件错误
浏览器如何实现对应用程序缓存清单文件的请求,它与请求其他文件的方式有什么不同?
我之所以问,是因为在 IIS 7 中使用 Windows/NTLM 身份验证时,我看到了我不会预料到的行为。情况是我有一个定义了清单文件的站点。使用匿名身份验证,一切都按预期工作——站点加载并可以脱机使用。
当我禁用匿名并启用 Windows 身份验证时,该站点将在身份验证后正常加载,但我会在控制台(在 Chrome 或 iPad 2 上)中看到一个错误,指出无法获取清单文件。
在 iPad 上,错误是无法获取应用程序缓存文件。在 Chrome 中,具体错误是“应用程序缓存错误事件:清单提取失败 (401)”。在这两个实例中,我都可以在 Web 服务器日志中看到 401 响应代码。
为什么这种行为似乎出乎意料是对所有其他资源(CSS、JavaScript、图像)的请求都按预期工作。此外,我可以浏览到我的 .appcache 文件并加载它。
谁能解释发生了什么?
有没有其他人遇到过这个问题并找到了解决方案?
mime-types - 当我离线并从 AppCache 请求 css 和 js 文件时,将资源解释为脚本但使用 MIME 类型 text/html 传输
我正在开发一个网络应用程序,我试图在其中使用 HTML5 应用程序缓存。
我可以在线成功缓存文件并从 AppCache 加载文件。但是当我离线时,所有的 css 和 js 文件都使用 MIME 类型 text/html 而不是 application/x-javascript 或 text/css 传输,因此它无法在离线时正常工作。
这是我在离线时请求页面时得到的。
因此,页面没有设置样式并出现各种 JS 错误。
如何正确设置,以便在离线时使用正确的 MIME 类型从 appcache 传输 css 和 js 文件?谢谢你的建议
更新:这就是我在服务器上提供清单文件的方式
我已经通过了这个验证测试: http: //manifest-validator.com/
这是我的清单文件:
这是在 chrome://appcache-internals/ 上显示 MIME 类型和其他详细信息的缓存文件之一
另一个更新:这在 Firefox 上运行良好,不会出现任何 MIME 类型错误。直也
json - 使用 HTML5 的 appcache 功能时如何允许 json 请求?
当我将 appcache 添加到运行 jquery mobile 的 webapp 中时,所有从我的服务器请求 json 文件的 ajax 调用停止工作。我的清单文件如下所示:
initJson 是不起作用的调用之一。我尝试输入完整地址(aaa:bbb:ccc:ddd:6565/initJson)也没有成功。
在我的 .htaccess 文件中,我只有这一行:
html - 使用本地存储的页面版本而不是另一个请求
我正在开发一个性能是一个非常重要的问题的网络项目。
编辑:
情况:
我想添加一些有关用户工作流程的详细信息:
- 用户访问我网站的欢迎页面
http://example.org/
。 - 他单击一个链接以访问该页面
http://example.org/mypage
onclick
- 已执行链接的处理程序。- 处理程序使用 XHR 加载数据。
- 处理程序
http://example.org/mypage
动态创建。 - 处理程序将 mypage 保存在本地使用
FileSystem API
atfilesystem:http://example.org/mypage
。编辑:(是filesystem:http://example.org/mypage
存储在FileSystem
客户端的本地资源) - 处理程序扩展历史并将使用的地址栏的URL
History API
从http://example.org/
(欢迎页面的 URL) 更改为http://example.org/mypage
(用户想要查看的页面)。 - 用户同时浏览另一个页面。
- 稍后,用户
http://example.org/mypage
直接在地址栏中键入。 - 浏览器显示/加载
filesystem:http://example.org/mypage
(这是本地存储的版本http://example.org/mypage
)而不是http://example.org/mypage
. 这意味着:浏览器不会创建新请求,它使用本地存储的http://example.org/mypage
.
如何让浏览器使用本地存储的页面版本而不是创建新请求?编辑: - 这就是我想在上面列表的#10 中做的事情。
编辑:
我的问题:
客户端已经在http://example.org/mypage
上面列表的 #2 到 #7 中创建/生成。我不需要在其他时间创建该页面。这就是为什么我不希望浏览器创建对http://example.org/mypage
.
这就是我想做的:
如果
filesystem:http://example.org/mypage
已经创建(如果用户已经访问过http://example.org/mypage
):使用
filesystem:http://example.org/mypage
而不是http://example.org/mypage
.除此以外:
发送请求
http://example.org/mypage
试图解决:
我不能使用清单文件的后备部分来执行以下操作:编辑:(除了原点)
回退: http ://example.org/mypage 文件系统:http://example.org/mypage
为了让浏览器使用存储在 FileSystem 中的本地版本,因为 Fallback 指令仅在用户离线时使用,否则将被忽略。编辑:但我想使用filesystem:http://example.org/mypage
而不是http://example.org/mypage
,即使用户在线。
- 我知道我可以在服务器生成的页面的响应标头中使用 Expire 字段,以便不创建新请求并使用缓存版本。
但是,如果我使用 JS 和 XHR 在客户端动态创建页面会怎样。编辑:(我在 中描述了这种情况The situation
)在客户端创建页面时,无法让客户端缓存该页面。这就是为什么我手动“缓存”页面FileSystem API
以将其存储在客户端。
为了提高性能,我尝试存储用户已经在本地访问过的任何页面。当用户再次访问一个页面时,我会向他展示该页面的旧的、本地存储的版本,并且我的脚本会创建一个 XHR 以查明该页面是否同时发生了变化。
但是我怎样才能让浏览器使用页面的本地版本呢?我可以使用 FileSystem API 在客户端本地保存生成的页面,我可以为生成的页面选择一个 URL,以使用 History API 将其显示在浏览器的位置栏上。
当用户现在访问另一个站点然后按下后退按钮时,我可以通过事件处理程序捕获 onPopState 事件。
并且该事件处理程序可以使用 FileSystem API 加载动态创建的文件。
但是,如果用户不使用后退按钮并且如果他将我使用 History API 注册的 URL 直接输入到位置栏中,我该怎么办?
然后浏览器不会使用本地存储的页面版本,浏览器会创建一个从服务器加载页面的请求。
html - 带有 Chrome 和 HTTPS Everywhere 插件的 HTML5 appcache 导致跨站点 css 无法加载
我的一个网页出现了问题,该网页已更改为使用 HTML5 appcache 功能。当在页面上启用 appcache 时,Chrome 19(我假设是早期版本)会阻止我的跨站点 css 文件。该页面http://www.ericperrets.info/index.html从我的服务器加载了一些图像/css 文件,并从 google url/servers 加载了一些 css 文件。下面是epi.appcache文件内容
当页面在最新的 safari 或 firefox 中加载时可以找到,但是当我尝试在 Chrome 中加载它时,它会阻止对http://fonts.googleapis.com/css?family=Reenie+Beanie|Candal&v1&text=的调用ERIC%20PT%E2%80%99SINFOAesum WorkapntcfLidh%2C
更新:我通过禁用我的 Chrome 插件之一解决了这个问题:HTTPS Everywhere。这是一个非常有用的插件。除了将 URL 更改为 https 之外,还有其他方法可以解决此问题吗?
html5-appcache - 强制多个用户删除他们的应用缓存
我制作了一个可以缓存的 webapp,但是缓存产生了很多问题,所以我需要它们全部清除缓存。
这可以在我的服务器上自动完成吗?
这些选项会起作用吗?
- 更改
<html manifest="cache.appcache">
为<html>
- 从服务器中删除
cache.appcache
文件 - 在所有资源之上添加
NETWORK:
标题
android - android 2.2 中的 Android 应用缓存
我正在编写一个使用 WebViews、外部托管的 js 文件和一个清单文件来控制 appcache 的 android 应用程序。在 android 4 中一切似乎都可以正常工作,但在 2.2 中,缓存似乎不起作用。
流程如下:
Android 应用程序加载本地 html 文件并将其加载到 webview 中。
本地 html 文件有一些 javascript 可以将窗口位置切换到远程“引导”文件的位置。
引导文件包括一些用于下载 javascript 应用程序和支持 CSS 的 javascript(通过将脚本/链接标签写入 dom),以及到远程清单文件的链接(绝对 URL,与引导文件和应用程序文件在同一位置提供) )。
应用程序被下载,并呈现到屏幕上。
清单文件如下所示:
我遇到的问题是,在 android 2.2 (HTC hopeHD) 中,当我更改清单文件时,应用程序只重新下载引导 html 文件,并忽略 app-mobile.js 和 css 文件,并始终使用缓存中的。这适用于我在 android 4 中的预期(更改清单文件会重新下载所有指定的资源)。
我已经在模拟器和设备中运行了这个,结果是一样的。
谁能看到我做错了什么?
提前致谢。
html - HTML5 应用程序缓存回退在 Firefox 中不起作用
我正在使用最新的 Firefox (11),并且我已将 IIS 设置为将 *.appcache 作为文本/缓存清单提供服务,并且通过查看“about:cache”“C: \Users\\AppData\Local\Mozilla\Firefox\Profiles\.\OfflineCache”(根据MDN),下面是我的 demo.appcache 文件:
我的步骤描述如下:
- 通过选项->高级->“离线Web内容和用户数据”->“立即清除”清除所有缓存。
- 访问我的html页面
<html manifest="demo.appcache">
- 我加倍 Firefox 确实缓存了我在上面的 demo.appcache 中指定的项目。
- 我通过 Menu -> Web Developer -> Work Offline 将 Firefox 切换到“脱机工作”。
- 我访问“Online.html”,我希望 Firefox 会向我呈现 offline.html,但是,它说“我无法访问该页面,因为我处于离线状态”。
Chrome 一切正常,但无法切换到“离线模式”,请参阅:Broken Offline Support Opera 可以离线工作,但它甚至可以正确缓存,它没有缓存 offline.html 我在“缓存”模块中指定的显然违反了标准。
我在这个问题(第 5 步)上苦苦挣扎超过 3 天,任何帮助将不胜感激!
html - 无论 URL 参数,所有页面的后备?
我在清单中有以下 FALLBACK 部分
我正在尝试使用 Firefox 及其离线工作功能。这适用于任何 URL,如 pageA.php、pageB.php 等。但是当我输入这样的 URL 时
然后不显示离线页面,仅显示警告消息:
Firefox 目前处于离线模式,无法浏览网页
任何想法如何修改清单,以便带有参数的 URL 也将回退到 offline.html?