问题标签 [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.

0 投票
3 回答
671 浏览

html - 如何使用 HTML5 的应用缓存(appcache)来缓存动态页面?

我有想要离线使用的动态页面。我想使用 HTML5 的应用程序缓存来做到这一点。问题是我不知道页面的所有资源(JavaScript 和 CSS),因为这些部分是动态的。

我有一个如下所示的 manifest.appcache 文件:

但这似乎只缓存页面的 HTML,而不是页面的其余资源。有没有办法做这样的事情?

如果没有,是否可以使用 JavaScript 以编程方式设置缓存(我想我可以循环通过链接和脚本标签)?

0 投票
3 回答
1664 浏览

windows-authentication - Windows/NTLM 身份验证的应用程序缓存清单文件错误

浏览器如何实现对应用程序缓存清单文件的请求,它与请求其他文件的方式有什么不同?

我之所以问,是因为在 IIS 7 中使用 Windows/NTLM 身份验证时,我看到了我不会预料到的行为。情况是​​我有一个定义了清单文件的站点。使用匿名身份验证,一切都按预期工作——站点加载并可以脱机使用。

当我禁用匿名并启用 Windows 身份验证时,该站点将在身份验证后正常加载,但我会在控制台(在 Chrome 或 iPad 2 上)中看到一个错误,指出无法获取清单文件。

在 iPad 上,错误是无法获取应用程序缓存文件。在 Chrome 中,具体错误是“应用程序缓存错误事件:清单提取失败 (401)”。在这两个实例中,我都可以在 Web 服务器日志中看到 401 响应代码。

为什么这种行为似乎出乎意料是对所有其他资源(CSS、JavaScript、图像)的请求都按预期工作。此外,我可以浏览到我的 .appcache 文件并加载它。

谁能解释发生了什么?

有没有其他人遇到过这个问题并找到了解决方案?

0 投票
1 回答
4562 浏览

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 类型错误。直也

0 投票
3 回答
3129 浏览

json - 使用 HTML5 的 appcache 功能时如何允许 json 请求?

当我将 appcache 添加到运行 jquery mobile 的 webapp 中时,所有从我的服务器请求 json 文件的 ajax 调用停止工作。我的清单文件如下所示:

initJson 是不起作用的调用之一。我尝试输入完整地址(aaa:bbb:ccc:ddd:6565/initJson)也没有成功。

在我的 .htaccess 文件中,我只有这一行:

0 投票
2 回答
241 浏览

html - 使用本地存储的页面版本而不是另一个请求

我正在开发一个性能是一个非常重要的问题的网络项目。

编辑:

情况:

我想添加一些有关用户工作流程的详细信息:

  1. 用户访问我网站的欢迎页面http://example.org/
  2. 他单击一个链接以访问该页面http://example.org/mypage
  3. onclick- 已执行链接的处理程序。
  4. 处理程序使用 XHR 加载数据。
  5. 处理程序http://example.org/mypage动态创建。
  6. 处理程序将 mypage 保存在本地使用FileSystem APIat filesystem:http://example.org/mypage编辑:(filesystem:http://example.org/mypage存储在FileSystem客户端的本地资源)
  7. 处理程序扩展历史并将使用的地址栏的URLHistory APIhttp://example.org/(欢迎页面的 URL) 更改为http://example.org/mypage(用户想要查看的页面)。
  8. 用户同时浏览另一个页面。
  9. 稍后,用户http://example.org/mypage直接在地址栏中键入。
  10. 浏览器显示/加载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

试图解决:

  1. 我不能使用清单文件的后备部分来执行以下操作:编辑:(除了原点)

    回退: http ://example.org/mypage 文件系统:http://example.org/mypage

为了让浏览器使用存储在 FileSystem 中的本地版本,因为 Fallback 指令仅在用户离线时使用,否则将被忽略。编辑:但我想使用filesystem:http://example.org/mypage而不是http://example.org/mypage,即使用户在线。

  1. 我知道我可以在服务器生成的页面的响应标头中使用 Expire 字段,以便不创建新请求并使用缓存版本。

但是,如果我使用 JS 和 XHR 在客户端动态创建页面会怎样。编辑:(我在 中描述了这种情况The situation)在客户端创建页面时,无法让客户端缓存该页面。这就是为什么我手动“缓存”页面FileSystem API以将其存储在客户端。

为了提高性能,我尝试存储用户已经在本地访问过的任何页面。当用户再次访问一个页面时,我会向他展示该页面的旧的、本地存储的版本,并且我的脚本会创建一个 XHR 以查明该页面是否同时发生了变化。

但是我怎样才能让浏览器使用页面的本地版本呢?我可以使用 FileSystem API 在客户端本地保存生成的页面,我可以为生成的页面选择一个 URL,以使用 History API 将其显示在浏览器的位置栏上。
当用户现在访问另一个站点然后按下后退按钮时,我可以通过事件处理程序捕获 onPopState 事件。
并且该事件处理程序可以使用 FileSystem API 加载动态创建的文件。
但是,如果用户不使用后退按钮并且如果他将我使用 History API 注册的 URL 直接输入到位置栏中,我该怎么办?
然后浏览器不会使用本地存储的页面版本,浏览器会创建一个从服务器加载页面的请求。

0 投票
0 回答
493 浏览

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 之外,还有其他方法可以解决此问题吗?

0 投票
1 回答
252 浏览

html5-appcache - 强制多个用户删除他们的应用缓存

可能重复:
我的 HTML5 应用程序缓存清单正在缓存所有内容

我制作了一个可以缓存的 webapp,但是缓存产生了很多问题,所以我需要它们全部清除缓存。

这可以在我的服务器上自动完成吗?

这些选项会起作用吗?

  • 更改<html manifest="cache.appcache"><html>
  • 从服务器中删除cache.appcache文件
  • 在所有资源之上添加NETWORK:标题
0 投票
0 回答
635 浏览

android - android 2.2 中的 Android 应用缓存

我正在编写一个使用 WebViews、外部托管的 js 文件和一个清单文件来控制 appcache 的 android 应用程序。在 android 4 中一切似乎都可以正常工作,但在 2.2 中,缓存似乎不起作用。

流程如下:

  1. Android 应用程序加载本地 html 文件并将其加载到 webview 中。

  2. 本地 html 文件有一些 javascript 可以将窗口位置切换到远程“引导”文件的位置。

  3. 引导文件包括一些用于下载 javascript 应用程序和支持 CSS 的 javascript(通过将脚本/链接标签写入 dom),以及到远程清单文件的链接(绝对 URL,与引导文件和应用程序文件在同一位置提供) )。

  4. 应用程序被下载,并呈现到屏幕上。

清单文件如下所示:

我遇到的问题是,在 android 2.2 (HTC hopeHD) 中,当我更改清单文件时,应用程序只重新下载引导 html 文件,并忽略 app-mobile.js 和 css 文件,并始终使用缓存中的。这适用于我在 android 4 中的预期(更改清单文件会重新下载所有指定的资源)。

我已经在模拟器和设备中运行了这个,结果是一样的。

谁能看到我做错了什么?

提前致谢。

0 投票
1 回答
1337 浏览

html - HTML5 应用程序缓存回退在 Firefox 中不起作用

我正在使用最新的 Firefox (11),并且我已将 IIS 设置为将 *.appcache 作为文本/缓存清单提供服务,并且通过查看“about:cache”“C: \Users\\AppData\Local\Mozilla\Firefox\Profiles\.\OfflineCache”(根据MDN),下面是我的 demo.appcache 文件:

我的步骤描述如下:

  1. 通过选项->高级->“离线Web内容和用户数据”->“立即清除”清除所有缓存。
  2. 访问我的html页面<html manifest="demo.appcache">
  3. 我加倍 Firefox 确实缓存了我在上面的 demo.appcache 中指定的项目。
  4. 我通过 Menu -> Web Developer -> Work Offline 将 Firefox 切换到“脱机工作”。
  5. 我访问“Online.html”,我希望 Firefox 会向我呈现 offline.html,但是,它说“我无法访问该页面,因为我处于离线状态”。

Chrome 一切正常,但无法切换到“离线模式”,请参阅:Broken Offline Support Opera 可以离线工作,但它甚至可以正确缓存,它没有缓存 offline.html 我在“缓存”模块中指定的显然违反了标准。

我在这个问题(第 5 步)上苦苦挣扎超过 3 天,任何帮助将不胜感激!

0 投票
0 回答
270 浏览

html - 无论 URL 参数,所有页面的后备?

我在清单中有以下 FALLBACK 部分

我正在尝试使用 Firefox 及其离线工作功能。这适用于任何 URL,如 pageA.php、pageB.php 等。但是当我输入这样的 URL 时

然后不显示离线页面,仅显示警告消息:

Firefox 目前处于离线模式,无法浏览网页

任何想法如何修改清单,以便带有参数的 URL 也将回退到 offline.html?