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

android - Android 中使用 .map 文件的离线地图

我找到了一些使用 .map 文件查看离线地图的代码。但我找不到创建 .map 文件或为特定城市或州生成文件的方法。谁能告诉我如何为特定城市或州创建或生成 .map 文件?我使用 .map 文件显示离线地图的代码如下:

我无法创建 .map 文件,因此请尽快为我提供解决方案。

0 投票
7 回答
6011 浏览

javascript - HTML5 / JS - 检查应用程序是否离线

我正在测试 HTML5 离线应用程序。为此,我将停止本地 Web 服务器 (IIS) 并打开应用程序。它加载得很好,但是一旦它请求服务器端 API 方法就失败了。

我想防止这种情况发生,而不是 $.get('/api/method') 从我的本地存储中读取数据。但是我可以找到任何工具来了解我的应用程序处于脱机状态。

我尝试使用navigation.onLine,但它似乎总是正确的(至少我可以在 Chrome 中看到)。

你有什么建议吗?

编辑:考虑到当前的答案。应用程序清楚地知道它处于脱机状态,因为它根据 cache.manifest 占用资源。对我来说这很荒谬,客户需要做任何类型的技巧和 ping。我认为应该有一种简单的方法来检查当前模式。

0 投票
2 回答
1781 浏览

html - HTML5 / JS / 离线模式 - 请求带有查询参数的页面

我有一个页面,它是缓存清单 (/cache) 的一部分。

一旦我的应用程序处于离线模式,我就可以打开该页面 ( http://app/cache)。但是,如果我尝试使用查询字符串访问它,Chrome 会将其视为不存在并返回后备页面(http://app/cache?url=1234- 不起作用)。

有谁知道解决方法?

0 投票
1 回答
117 浏览

html - 仅在用户需要时才缓存应用程序?

有些浏览器不会询问客户端是否要使用应用程序缓存,而只是在第一次访问时下载整个内容(例如,android 上的浏览​​器)。当应用程序缓存有很多 MB 并且客户端在移动网络上时,这可能会导致麻烦 - 这很昂贵!是否可以阻止缓存被下载?按下例如 android 上的菜单按钮不会关闭浏览器,它将在后台运行。

当客户端按下“嘿,我想离线缓存此站点”按钮时,仅添加基于 cookie 集的清单是个好主意吗?这会带来新的挑战吗?


我已经对此进行了测试,并且似乎可以正常工作。不过需要更多的测试。如果有人感兴趣,可以在大约两周内提供该网站的链接。

0 投票
1 回答
1028 浏览

sencha-touch - 在 cache.manifest 中包含多个 js 文件?

我正在使用 MVC 格式的 sencha touch 2。我创建了一个 cache.manifest 文件以使我的应用程序脱机。

我的问题是 cache.manifest 文件似乎无法识别除 app.js 之外的任何 js 文件。当我在线工作时,它似乎可以正确缓存,但是当我离线时,缓存只返回 index.html、app.js 和 sencha 文件。cache.manifest 文件可以只有一个 .js 文件吗?

0 投票
2 回答
385 浏览

asp.net-mvc - 仅在生产模式下应用缓存清单

我在我的应用程序中添加了一个“cache.manifest”(效果很好),从那时起,调试起来就非常困难,因为我必须始终清除缓存或修改 cache.manifest 版本。

我尝试使用“HttpContext.Current.IsDebuggingEnabled”条件加载清单:

这不起作用,Visual Studio 给了我 3 个错误:

  • 该块缺少结束 } 字符
  • html元素未关闭
  • 不能有超过 1 个html元素。

有人有想法吗?

谢谢 !

0 投票
1 回答
263 浏览

javascript - 缓存在 iOS AppCached 上的 Ajax 请求

我有一个 HTML5 离线应用程序执行以下操作:

  1. 显示页面
  2. 检查清单(根据规格)
  3. 执行 ajax 请求(使用 Prototype)来检查是否在线。

我仅在 Mobile Safari iOS(不是 Safari,不是 Chrome,不是 Firefox)上遇到以下问题:

  • OK:在线运行场景
  • OK:离线运行场景(平面模式)
  • OK:停止服务器 OK
  • KO:重启服务器

Ajax-Request 已执行但挂起直到超时,就像它离线一样

解决方法

  • 好的:如果我更新清单,缓存就会刷新
  • 好的:如果我在 iOS 偏好设置中清理缓存
  • KO:如果我在 ajax-request 中放置一个参数(如 ?d={timemillis} )
  • KO:ajax 请求在 POST 中
  • KO:请求具有标题:Cache-Control: no-store 和 Pragma: no-cache
  • KO:如果我杀死 MobileSafari 并重新加载
  • KO:清单的 NETWORK 部分明确了 URL

所以我不知道该怎么办:

  • 我无法清理移动 Safari 存储,因为它也会清除 localStorage
  • 我无法“触摸”服务器上的清单文件
  • 我不能确定我的用户将始终处于“平面模式”

问题:

  • 有没有办法强制缓存更新?(根据规格没有)
  • 有没有办法禁止缓存 Ajax Request ?(清单除外)
  • 是否有任何 jsFiddle 证明它可以在 iOS 上运行?

最好的祝福

0 投票
1 回答
507 浏览

asp.net-mvc-3 - HTML 5 离线功能是否适用于浏览器?

我已经在这几天了,我变得越来越沮丧。我在 Chrome、FF 上得到不一致的离线功能结果,我刚刚开始使用 Safari。

我正在使用 Asp .Net MVC 3 开发沙盒应用程序。下面是我的应用程序的结构:

  • 控制器/汽车控制器
  • 视图/汽车/编辑
  • 视图/汽车/编辑离线
  • 浏览量/汽车/索引

在 3 个视图中,Index 是唯一定义了 manifest 属性的视图。索引是最初请求的视图。以下是我的清单的内容:

在 Index 的第一个请求时,浏览器会在 Application Cache 中创建 3 个条目。他们是:

  • 本地主机/沙盒/汽车,类型 = 主
  • localhost/Sandbox/Car/EditOffline,类型 = 后备
  • 本地主机/沙盒/离线。,类型=清单

我一直在模拟所有 3 个浏览器的脱机行为的方式是显式停止 IIS。之后,已请求索引。我关闭了 IIS 并向 Edit 操作发出请求。结果是 EditOffline 得到了服务。现在,当我再次查看 Index 视图时,我收到 404 错误,但为什么呢?我以为浏览器会提供该页面的缓存版本?当我重新请求编辑视图时(仍处于离线状态),我也收到 404 错误,但为什么呢?浏览器之前提供了 EditOffline 视图,那么为什么我现在得到 404 呢?在 FF 中,我已经让它按预期工作了几次,但我没有进行任何代码更改。我明确删除了离线缓存,重新启动服务器,重新请求索引视图,它神奇地工作了。

0 投票
1 回答
7915 浏览

java - 安卓离线存储管理

如何从服务器获取或检索数据并在 android 应用程序上发布更新。如何管理离线存储意味着当没有互联网连接时如何在 android 应用程序上更新数据,至少它如何考虑在 android 应用程序上显示更新。如果有人知道这个问题,请回答它。

我实际上正在使用phpjson作为中间文件从服务器获取数据并将更新发送到 android 应用程序,但它似乎更复杂,如果我没有获得访问服务器端文件的权限,我该如何管理更新?是否需要有访问服务器文件的权限?

有关主题的更多信息:如果我想将更新与网站同步,
我该如何处理或实施它?我不是在这里问任何类型的编码。

0 投票
0 回答
1703 浏览

android - 如何以编程方式仅删除 android WebView 中的离线模式缓存?

我正在尝试删除我的离线模式(在 cache.manifest 中定义)文件,而不删除任何 WebSQL 数据库或本地存储数据。

我一直在尝试删除缓存文件,并使用 stackoverflow 和其他地方的相关答案来使用以下方法的答案删除 WebView 缓存:

Android Webview - Completely Clear the Cache which states to手动删除Context.getCacheDir(); FWIW中的文件,我注意到使用更简单的方法会产生相同的结果(这是一个不被接受的答案)WebView.clearCache(true);:。这种方法确实会删除未包含在 cache.manifest 中的缓存文件。

我还使用了其他多个提到使用的地方描述的技术

对我的离线模式文件没有影响。我已经可验证地删除了 webview.db,但奇怪的是,我从未见过使用Context.databaseList().

(顺便说一句,我对删除 webview.db 持怀疑态度,因为我注意到在删除 webview.db 后发生崩溃,并在下次打开我的应用程序时尝试将文本粘贴到输入字段中。似乎需要采取一些防御措施至少针对某些应用程序围绕该技巧进行编程

)

我还使用了应用程序设置页面中的“清除缓存”按钮,对离线模式文件没有影响。应用程序设置页面上的“清除数据”按钮确实删除了离线模式文件,但也删除了其他所有内容,包括我的 WebSQL 数据库和本地存储密钥。我也不知道如何以编程方式模仿“清除数据”按钮,这也很有用,尽管不是我正在寻找的答案。

重申一下,关键是这些方法似乎都不够。我想要做的是删除我离线模式缓存的 JS/HTML/CSS 并保留所有通过 Android WebView 创建的 WebSQL db 文件和本地存储密钥。

我正在查看我的网络服务器日志,这样我就可以准确地知道我的应用程序何时请求文件。