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

0 投票
2 回答
16824 浏览

html - HTML5 离线缓存

我已阅读以下 Mozilla 开发人员文章,该文章解释了如何在 Web 应用程序中实现 HTML 5 离线资源缓存。

我已经尝试在本地对此进行测试:将 mime 类型添加到列表中,创建清单文件,将我的 doctype 更改为 HTML 5 doctype,在 HTML 元素上指定 manifest 属性和正确的路径——但我仍然没有查看 Firefox 正在使用的清单文件。我还检查了 Apache 上的访问日志,没有看到任何对清单文件的请求。

有没有人给它一个刺戳并取得了成功?我只是不知道如何进一步解决问题,并欢迎任何建议。

0 投票
6 回答
39514 浏览

firefox - 如何正确地使在线/离线 Web 应用程序的 HTML5 缓存清单失效?

我目前正在使用缓存清单(如此所述)。这有效地使用户离线时运行应用程序所需的资源可用。

不幸的是,它的效果有点太好了。

加载缓存清单后,Firefox 3.5+ 会缓存缓存清单中明确引用的所有资源。但是,如果服务器上的文件被更新并且用户在线时尝试强制刷新页面(包括缓存清单本身),Firefox 将绝对拒绝获取任何内容。应用程序在它被缓存的最后一点保持完全冻结。问题:

  1. 我希望 Firefox 在网络连接失败时有效地仅依赖缓存的资源。我试过使用 FALLBACK 块,但无济于事。这甚至可能吗?
  2. 如果 #1 不可能,用户是否可以强制刷新页面并绕过此缓存(ctrl-F5 不会这样做,也不会清除浏览器的缓存,令人震惊)除了清除他们的私人数据吗?或者,缓存清单机制是否支持过期标头,并且它的行为是否记录在任何地方?
0 投票
2 回答
4317 浏览

safari - 防止离线 iphone webapp 在 Safari 中打开链接

我正在开发一个可以在离线模式下与移动 Safari 一起使用的网站。我可以将其添加到主屏幕并从那里加载。但是,一旦从主屏幕打开,单击某些链接将跳出应用程序并在移动 safari 中打开——尽管我在所有链接点击时都使用了 preventDefault() !

该应用程序在<body>关卡上绑定了一个 onclick 事件处理程序。使用事件委托,它捕获对任何链接的任何点击,查看其href(例如“帮助”或“评论”),并动态调用javascript模板并更新页面。事件处理程序在事件对象上调用 preventDefault() - 对于某些链接这是有效的,并且页面会使用模板输出进行更新。但是,对于在输出模板结果之前导致本地数据库命中的链接,这些链接会在移动 safari 中打开。

在桌面 safari 中,即使我处于离线状态,所有链接也能正常工作 - 正在发生一些特定于移动 safari 的事情。

关于为什么某些链接可以离线工作,而其他链接不能工作的任何想法?清单文件中没有列出任何有问题的链接 URL,但它们不需要(不应该)列出,因为链接操作被阻止。

一些额外的奇怪之处: * 一旦我点击加载到移动 safari 中的链接,即使我处于离线状态,这些相同的链接现在也可以正常工作,并且填充了来自数据库的数据的模板可以正常工作。换句话说:链接在从主屏幕打开时失败,但不是从移动 safari 离线中打开 * 更改链接以删除数据库命中(使用模拟数据库结果填充模板)解决了问题,并且可以单击链接在主屏幕的应用程序中。

0 投票
7 回答
14549 浏览

iphone - 移动 Safari 中的 HTML5 离线视频缓存

我似乎无法让 iPhone 或 iPad 上的 Safari 离线缓存视频。当我离线时,其他所有内容都会很好地缓存。视频文件显然在清单中,但我只是得到了断箭头。在 Safari 桌面上运行良好。有什么线索吗?我已经尝试过对象嵌入和视频标签。

0 投票
1 回答
744 浏览

html - 移动 Safari 不会停止缓存

我正在为移动 Safari 编写一个离线应用程序。

我刚刚到了它将在主屏幕上创建应用程序图标并离线运行的地步。

现在我想更新我的应用程序中的 HTML,但它拒绝刷新。我试过刷新按钮,“清除缓存”设置选项,我什至关闭了服务器,但 safari 仍然显示页面。

帮助!

0 投票
2 回答
2193 浏览

dom - 客户端数据存储、DOM 存储还是 HTML5 本地存储?

考虑到我需要在本地存储数据以供离线查看时,我真的很困惑。现在我有两个选择,DOM 存储和 HTML5 本地存储。作为这个特定主题的完整新手,我需要一些 SO 专家和大师的帮助。这两者的优缺点是什么?谁能比较一下这些。,以便我能深入理解或提供一些参考链接?

0 投票
1 回答
217 浏览

iphone - 如何在iphone编程中离线检索数据

在我的应用程序中,我想保存一些数据以在离线时访问,这些数据包含文本以及图像,所以任何人都可以建议我如何制作它。

0 投票
0 回答
778 浏览

ruby-on-rails - 带有 HTML5 离线应用程序的 Ruby On Rails - Firefox 不会缓存 application.manifest 但 Safari 会

我正在学习这个 Railscast 教程:第 247 集

我已经在教程中完成了这一点:添加了 rack-offline gem,添加了 application.manifest 路由,并在 html 标记中添加了对清单的引用。就在它开始谈论缓存问题之前。

Safari 按预期工作——当服务器运行时,页面被提供。从服务器日志中,我可以看到 Safari 每次都针对项目页面向服务器发出单个请求。当我关闭服务器时,页面也会显示,即使在关闭浏览器并重新启动之后也是如此。它似乎是从 application.manifest (缓存清单)中提取的。

Firefox 无法按预期工作 – 第一次访问该页面时,Firefox 让我知道该网页想要在本地存储某些内容,我允许。单击允许后,Firefox 向服务器发出 5 次页面请求(来自服务器日志)。每个请求的哈希值都不同。更改哈希是否有可能触发 Firefox 继续尝试获取新清单,直到达到某个最大值(5 次尝试)?

然后,在服务器停止后,Firefox 将根本不显示该页面。看起来它没有缓存 application.manifest。Firefox 还为您提供了一种查看哪些站点在本地存储内容的方法,方法是转到工具/选项/高级/网络(Apple 上的 Firefox/Preferences/Advanced/Network)。我在那里看到 localhost 但大小为 0 字节。所以由于某种原因,Firefox 没有下载我的 application.manifest 以及文件

0 投票
3 回答
66195 浏览

javascript - 为什么 express-js 不设置 Content-Type 标头?

我有以下内容:

Chrome 中的网络标签显示它是text/plain. 为什么不设置标题?

上面的代码有效,我的问题是由链接到旧版本的 express-js 引起的

0 投票
1 回答
521 浏览

ruby - 在 sinatra 中脱机

我正在尝试在 Sinatra 中设置脱机机架,但设置时遇到问题。在 Rails 中这很容易,但在 Sinatra 中没有找到任何示例......