问题标签 [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 投票
0 回答
773 浏览

asp.net-mvc-3 - 用户登录时带有 HTML5 离线应用程序的 ASP .NET MVC3 错误行为

我正在尝试构建一个具有 HTML5 离线可能性的基于 ASP.NET MVC3(使用剃刀语法)的 Web 应用程序,但不幸的是它不能正常工作。

我阅读了很多教程,从中我使用了一些东西。

首先,这是我的 _Layout.cshtml 的相关部分:

其次,这是我的 CacheManifestHandler 类:

最后但同样重要的是,我将这些行放在了我的 web.config 文件中:

离线功能有效,但主要问题是当用户以在线模式登录时,似乎什么也没发生。我必须至少刷新一次页面,然后才能看到用户登录。这很烦人。

是否有任何可能的解决方案,应用程序在在线模式下不使用离线应用程序缓存?

0 投票
1 回答
830 浏览

html - 更多奇怪的 Firefox 缓存清单行为:重定向到外部域导致 404 失败

我有一个带有缓存清单的 HTML5/Javascript(服务器上的 PHP/MySQL)应用程序,它在除 Firefox 之外的几乎所有移动和桌面浏览器上运行良好。

当我删除缓存清单时,它在 Firefox 中运行良好。因此,我无法弄清楚 Firefox 中的缓存清单有些奇怪。它正在从缓存中加载文件,即使该文件发送了 Cache-Control: no-store, no-cache 标头。

该文件处理用于获取 LinkedIn 访问令牌的 OAuth 舞蹈,并遵循以下步骤:

  1. 该应用程序使用 window.location.replace('file.php') 通过 Javascript 调用文件
  2. file.php 加载并被重定向到 file.php?param=initiate
  3. file.php?param=initiate 加载,从 LinkedIn 获取请求令牌,然后重定向到 LinkedIn 授权页面,然后被重定向到 file.php?param=initiate&otherparameters
  4. file.php?param=initiate&otherparameters 加载,otherparameters 用于从 LinkedIn 获取访问令牌,然后重新加载应用程序,因为它现在具有访问权限。

但是,在 Firefox(Windows 7 上的 16.0.2)上,我得到以下信息:

  1. 该应用程序使用 window.location.replace('file.php') 通过 Javascript 调用文件
  2. file.php 加载并被重定向到 file.php?param=initiate(FireBug 显示找到状态 302,响应标头显示位置 /file.php?param=initiate)
  3. file.php?param=initiate 加载,从 LinkedIn 获取请求令牌,但不重定向到 LinkedIn 授权页面:它显示 404 页面(FireBug 显示找到状态 302,响应标头显示位置 https:linkedin.com/身份验证链接,但 Firefox 没有转到 LinkedIn 页面,它对 file.php?param=initiate 发出另一个 GET 请求并从缓存中加载它:状态 200 OK(BF 缓存)并显示 404 页面)。

file.php 不在缓存清单中。

基本上,它不会从步骤 3 转到响应标头中的 Location 应该将其带到 LinkedIn 授权页面,但我不知道为什么不这样做。

有想法该怎么解决这个吗?

如果你想重现这个问题,这里有一个测试事件的链接。尝试发送 LinkedIn 连接请求并观看 Firebug。此活动的所有 LinkedIn 个人资料(我的除外)都是虚拟个人资料,因此不必担心向随机陌生人发送 LinkedIn 连接请求。您必须先使用您的电子邮件注册才能获得激活链接,但如果您愿意,可以使用一次性电子邮件地址。

我尝试过的一些事情:

  1. 没有缓存清单:这修复了它,但我需要离线功能
  2. 发送带有 no-store、no-cache、must-ravalidate、过去过期日期等各种排列的标头。
  3. 减少缓存清单中的条目数
  4. SETTINGS 的各种组合:prefer-online、NETWORK:*、NETWORK:https://* 等。
0 投票
2 回答
2097 浏览

html - 如何在 HTML5 应用程序缓存错误事件中获取错误消息?

在我的离线 webapp 缓存期间,我收到一个完全有效的错误,它显示在浏览器控制台中,如下所示:

我可以添加一个侦听器来通知发生了错误。

如何获取错误详细信息,在这种情况下“更新期间清单已更改,计划重试”?

0 投票
2 回答
1319 浏览

html - HTML 5 缓存:window.applicationCache.abort(); 不工作

我正在开发一个带有离线模式的小型移动 WebApp。如果清单文件已更改,有什么方法可以防止自动更新?如果用户的互联网连接不好,他不应该被迫下载所有文件,而是应该收到一条消息,以便他以后可以更新文件。

我试过

但它不起作用。在 Safari 6.0.2 和 Chrome Canary 中都没有。

只有当用户使用以下代码手动单击我的“更新”按钮时,应用程序才应该更新文件:

0 投票
1 回答
288 浏览

android-webview - Android 4.0.4 - WebView - Appcache:通配符在网络部分不起作用

我想在清单中澄清对 Web 服务的 AJAX 调用仅在联机时执行。为此,我使用NETWORK了清单的部分:

但这会导致$.getJSON在每次请求时调用 JQuery 函数的错误回调,即使在线时也是如此。

0 投票
1 回答
506 浏览

php - 我可以使用 Manifest 或 Appcache 文件定位特定浏览器/设备,还是只从桌面浏览器中排除 appcache?

本质上,我希望能够在我的网站上使用 appcache 文件,但仅适用于移动设备,以使这些设备能够查看我正在离线开发的网站/webapp,但是台式机/笔记本电脑通常可以访问互联网,我宁愿这些按原样查看站点,没有清单/缓存等。

我知道用户代理嗅探充其量是不可靠的,尽管可以提供一些好的结果,如果可以避免这种情况,那将是最好的。

我正在开发的站点/webapp 是用 HTML/CSS/JS/PHP 构建的,并使用响应式布局为每个设备提供相同的站点页面,并根据设备宽度(使用 css 媒体查询)使用自定义视图/布局。

感谢您提前提供的任何帮助,我对此的所有搜索都证明是徒劳的:(

更新

在 Robertc 在下面的评论之后,我想澄清一下,我想通过 appcache/manifest 文件排除任何缓存是桌面浏览器(即笔记本电脑上使用的相同浏览器)......这是来自客户端和同样从我看来,以编程方式将台式机和笔记本电脑定位在一起似乎更容易,因为它们使用相同的软件/操作系统...

更具体地说,我的 webapp 需要通过 iOS、Android 和 Blackberry 上的 appcache/manifest 支持缓存(尽管拥有所有平板电脑/智能手机会很好)所以问题可能是如何找到这些设备之一并包含 appcache 参考,但是这看起来像是在引导我希望避免的用户代理嗅探的路径......

0 投票
2 回答
1605 浏览

html - 应用程序缓存:不要在 404 上从 appcache 提供文件

我正在使用应用程序缓存使我的网站也可以离线工作。
我的清单看起来像这样,并使用以下内容嵌入<iframe>

当我切断互联网连接时,它按预期工作-> 一切都通过offline.html 页面提供。
但刚才我发现每个 404(例如服务器上从未存在的 URL)也使用清单中的 FALLBACK 部分显示offline.html。

有没有办法区分离线(在这种情况下,offline.html 是正确的选择)和服务器返回 404(在这种情况下我只想显示 404 错误)?

0 投票
1 回答
1654 浏览

caching - IE10 - 无法阻止 iframe 的缓存

我在页面上有模式框正在 iframe 中打开动态内容。

<a href="popup.php?id=52" rel="modal">Link 1</a>(固定标识)

<a href="popup.php?id=53" rel="modal">Link 1</a>(固定ID)...

但无论我做什么,我都无法阻止 iframe 内容缓存在 IE10 中(似乎其他浏览器都不错)。

  • 我使用html5,所以元标记是无助的。
  • Cache.manifest 让我的页面一团糟(或者如果只放 NETWORK:* - 无效)。
  • PHP 标头header("Cache-Control: no-cache"); header("Expires: -1");对 IE10 也不起作用。
  • 在 web 中找到的 JS/JQuery 解决方案我无法正确应用。

除了为 href 添加另一个动态 GET 参数之外的任何解决方案?

0 投票
0 回答
138 浏览

ruby-on-rails - rack-offline Gem:如何从缓存中排除某些文件

我 在我的 rails 应用程序中使用 gem rack 离线( https://github.com/wycats/rack-offline )进行离线缓存。

由于某种原因,我需要确保某些 HTML 文件永远不会离线缓存,并且总是从服务器加载。我知道,这很糟糕。但我的应用程序并非设计为离线工作,现在被迫制作一部分(客户需求! ),特别是只有 3 个页面,离线工作。所以我需要确保只有这 3 个页面被缓存..并且没有其他 HTML 文件被缓存。

我该如何做到这一点?

PS:我已经浏览了 gem 的 Github 页面,我想我可以通过操作“network”属性来完成此操作。但无法找到如何..

0 投票
0 回答
288 浏览

google-chrome - 谷歌浏览器在系统故障时丢失缓存数据

我正在建造一个供公众使用的交互式信息亭。使其成为 Chrome 中的网络应用程序。它需要离线工作。我的解决方案是使用浏览器应用程序缓存。问题:Chrome 在崩溃/电源故障时会丢失应用程序缓存中的所有内容。这是正常行为吗?!有没有办法在系统发生故障时保留内容?

编辑 2012-12-19:appcache 的内容没有丢失,它仍然存在。但是 Chrome 丢失了对数据的引用。如果我使用“--restore-last-session”标志启动 Chrome,它就会连接到缓存的数据。虽然这不是一个“漂亮”的解决方案......

澄清:真正的问题是当 Windows 和 Chrome 在电源故障后启动并且网络连接不存在时。Chrome 的行为就像 appcache 中没有任何内容一样,您会收到“无网络连接”错误。我不明白为什么它会这样工作?