问题标签 [offline-caching]
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 - HTML 5“离线 Web 应用程序”中有哪些新功能尚未在所有浏览器中可用?
HTML 5 的“离线 Web 应用程序”功能有哪些新功能,但并非所有浏览器都可用?
离线缓存是浏览器的工作——它是如何成为 HTML 的工作的?
Web 缓存是一种用于临时存储(缓存)Web 文档(例如 HTML 页面和图像)的机制,以减少带宽使用、服务器负载和感知延迟。网络缓存存储通过它的文档副本;如果满足某些条件,则可以从缓存中满足后续请求。
正如 Wikipedia 的Web 缓存文章中所写。
这是为 W3C 网站中的离线 Web 缓存编写的:
为了使用户即使在网络连接不可用时也能继续与 Web 应用程序和文档进行交互——例如,因为他们在 ISP 的覆盖范围之外旅行——作者可以提供一个清单,其中列出了 Web 所需的文件应用程序脱机工作,这会导致用户的浏览器保留文件的副本以供脱机使用。
HTML 5 在缓存方面做得更好和不同的是什么?
它类似于Internet Explorer 5 中的离线模式吗?我们可以缓存超出浏览器空间限制的数据吗?
请给我一个例子,以便我了解 HTML 5 离线缓存和浏览器缓存的区别。
html - HTML5:如果在同一个 URL 下加载不同的页面,则会忽略离线缓存
我有一个具有恒定 URL 和内部状态机的 Web 应用程序。状态通过帖子更改。我知道这是一个糟糕的设计,我应该使用其余的方法。但鉴于此,我有以下问题。
我使用 HTML5 离线缓存(HTML 标签中的 manifest 属性)。对于第一页,它会按照我的预期进行解析和缓存(登录页面)。但是对于第二页(主菜单),其中包含的清单没有被解析。Chrome 浏览器中不显示任何事件。如果我通过包含一个参数来稍微更改 URL,那么会解析清单,但不是在此之前。
如果我在登录页面清单中包含所有内容,则第二页会再次下载相同的文件。如果它们在第一页的清单中指定,则为事件。
为什么会有这种行为?
html - HTML5 离线存储 - 缓存清单网络
我正在尝试编写清单文件,但我在 FF5 中遇到了奇怪的问题,尽管我说不要这样做,但它的缓存仍然存在。我的清单文件如下所示:
有任何想法吗?
javascript - html5离线缓存表单数据
嗨,我设计了一个网络应用程序,可以在我的公司离线使用。人们会带着 iPad 在仓库里走动,离线输入一些非常简单的表单数据,通常是 15-20 个字符 id 代码和与之相关的数量。离线时存储此信息然后在连接时上传到数据库的好方法是什么?
我正在考虑使用 JavaScript 来检查连接。如果没有,则将数据附加到数组中。如果有连接,则追加然后上传整个数组然后清除它。
你能给我一些最佳实践的想法吗,比如如何不丢失数据,防止网络应用程序意外关闭时数据丢失等?谢谢
javascript - HTML5 缓存 Javascript 文件以供在线和离线使用
我发布了一个关于为什么我的 $.getJSON 停止的问题,但我认为这个问题现在更广泛了。
我有一个移动 HTML5 应用程序,它向 php Web 应用程序(在同一域上)执行 Ajax 请求。当有互联网连接时,即。navigator.onLine == true 我对 Web 应用程序进行了 $.getJSON 调用,并将响应本地存储在设备浏览器上的 websql db 中。
如果 navigator.onLine == false 那么我想跳过 json 请求并改为在本地提取数据。我的 JSON 工作正常,并且我成功地存储在离线 websql 存储中,但是在添加缓存清单文件时出现了问题。
我不确定如何缓存我需要的东西。这是我的缓存清单:
我想我假设我可以缓存来自 code.jquery.com/.. 的外部文件是对的?因为我需要他们在线和离线。
Eric 在我之前的问题中发布了一个答案,说我应该在 NETWORK 下添加 JS 文件:最后带有 * 的标题。当我这样做时,我的 JSON 调用会像我想要的那样被触发。但是,现在这些文件无法脱机使用。
这似乎也可以,但是当我离线时,甚至我的 CSS 都没有加载:
任何人都可以建议缓存 javascript/css 文件以供离线使用的最佳做法吗?
非常感谢,
比利
html - HTML5 离线缓存在不同浏览器中的工作方式不同,但总是失败
我正在尝试了解 HTML5 离线缓存的工作原理。我已经阅读了各种教程,它们对清单文件的外观都有微小的变化。我设置了一个带有缓存清单的页面,如下所示:
一个 .htaccess 文件
和 index.html 页面是这样的:
在 FireFox 上,它会显示 Checking、Downloading、progress,然后是 Cached,但使用 firebug 插件时,它会显示“应用程序缓存中有 0 个项目”。此外,状态显示为 2 (UNCACHED)。如果再次访问,它将保持在 Checking 状态并且状态显示为 Idle。
在 iOS 版 Safari 上,它会检查下载、进度,然后是“发生错误”。如果再次访问,也会发生同样的情况。
在这两种情况下,脱机时浏览回 URL 都会显示“找不到连接”错误消息。两种浏览器都是可用的最新版本。
将清单缓存更改为包括 CACHE:、NETWORK: 和 FALLBACK: 部分也没有效果。使用绝对 URLS 也没有什么不同。
使用名为 Packetyzer 的数据包嗅探器程序进行监视,我看到清单文件正在以正确的 MIME 类型传送到浏览器(在本例中为 Firefox)。有谁知道我可能做错了什么?
这些文件目前托管在http://www.factordice.com/html5
html - 如何在 HTML5 中检查页面是否可以离线使用?
我想用 HTML5 创建一个杂志阅读器。我想添加的一项功能是离线阅读文章的能力。
我想显示以前访问过的文章列表,并且仍然可以离线使用。问题是我不知道是否可以检查给定的 URL 在用户的离线缓存中是否可用。我可以将以前访问的 URL 存储在本地存储中,但我不能确定这些 URL 在缓存中是否仍然可用。是否可以在从缓存中删除给定 URL 或检查 URL 是否可以离线使用时收到通知?
谢谢, 迈克尔
gwt - 使用 GWT 内置的 RPC 序列化/反序列化机制
我正在使用 HTML5 本地存储开发 GWT 离线应用程序。我想使用 com.google.gwt.storage.client.Storage(在 2.3 版中引入)缓存/存储传输对象。但问题是,就目前(2.3 版)而言,Storage 只能保存字符串值。
是否有可能从客户端代码使用 GWT 内置的 rpc 序列化/反序列化机制?这样我就能够序列化传输对象并将它们存储在本地存储中,并在需要时检索它们并反序列化内容。
ipad - iPad 离线应用程序上的 HTML5 应用程序缓存 - 如果服务器不可用,则无法正常工作?
我正在为 iPad 开发一个小型 HTML5 Web 应用程序,旨在以全屏模式工作(即,它具有专有的 Apple 元标记,已添加到主屏幕):
该应用程序基本上通过 AJAX 获取一些数据并将其呈现给用户。AJAX 数据是外部的(来自不同的域、不同的服务器)。我有跨域请求的系统设置,它们在在线模式下工作。换句话说:静态数据位于服务器A上,动态数据位于服务器B上。
我创建了一个适当的缓存清单文件,列出了站点的所有静态内容(HTML、CSS、图像、JS),然后将NETWORK: *
部分放在最后——这样总是从网络中检索所有动态内容(AJAX)。如果请求失败,应用程序会“优雅地”失败,显示一些虚假内容。
通过上述设置,会发生以下情况:
- 如果我在线运行应用程序,一切正常;)
- 如果我在 iPad 上禁用 WiFi(纯离线模式),一切都会按预期工作 - 应用程序会退回到离线内容
- 如果我再次连接到网络,但将静态内容服务器脱机(缓存了所有内容的服务器),应用程序将无法启动;在闪屏中花了一段时间后,它向我显示了一个弹出窗口
<app> could not be opened because it could not connect to the server.
;我可以选择关闭或重试。
上面的第 3 点让我抓狂,因为这是我开始摆弄应用程序缓存的唯一原因。如果无法访问清单文件,为什么 iPad Web 应用程序不回退到缓存的内容?(不是404,服务器离线)
HTML5 iphone离线webapp的答案完全不正确吗?如果没有,我怎样才能在 iPad 上实现这种行为?
html - 如何将 HTML5 缓存与图像站点一起使用?
我正在尝试使用 HTML5 的 appcache 清单缓存站点以供离线查看。该网站由几个网页组成,每个网页都有一张图片。
我遇到的问题是我试图将这些图像一起缓存在不同的页面上,并超过了可用于缓存的配额。
有没有办法让每个页面都建立自己的缓存(而不是在站点范围内)?哪个是最好的方法?