window.caches 在 Android Chrome 中未定义,但在桌面 Chrome 中可用

Ser*_*nko 6 android google-chrome cachestorage

我对 Caches API 在移动设备上的可用性感到有些困惑。

https://developer.mozilla.org/en-US/docs/Web/API/CacheStorage

文档说明此 API 在服务工作线程范围和窗口范围内均可用。

我可以在桌面的 Chrome 上清楚地访问它,没有问题。

现在,每当我在 Android 的 Chrome 上进行功能检测时,我都会变得未定义,就好像功能不可用一样。

我试图通过这种方式检测:

if ('caches' in window)...
if ('caches' in self)...
Run Code Online (Sandbox Code Playgroud)

通过连接的设备等从控制台日志调用

我想念什么?

PS:我知道 Safari 有非常基本的实现,所以我预计 Safari 会出错,但在这里我正在 Android 上使用 Chrome 对其进行测试;/

uho*_*hon 5

window.caches当页面通过 SSL 提供服务时,似乎(CacheStorage) 仅在 chrome mobile 上可用。

我正在使用我的 Progressive Web App (PWA) 进行测试,其中包含一个用于缓存的 Service-Worker 和一个清单文件。

在 LAN 上通过 HTTP 提供 PWA 时window.caches不可用。当通过启用 SSL 的域名window.caches提供服务时,可用且行为类似于桌面版 chrome。无论您是在浏览器选项卡中运行还是独立运行(添加到主屏幕时),它都没有区别。

编辑:事实上,同样的行为也适用于桌面上的 chrome。我的应用程序上的缓存只能工作,因为我使用“本地主机”或 127.0.0.1 进行了测试。在任何其他域/IP 地址上,不使用 ssl 时缓存会被拒绝。

  • 如果您正在开发通过自定义主机名(除了 localhost 或 127.0.0.1 之外)提供服务的 Web 应用程序,您可以在 Chrome-Flags 中为此主机添加例外,以将其视为安全源。`chrome://flags/#unsafely-treat-insecure-origin-as-secure` 这将为主机名启用cache-api(以及许多其他浏览器功能)。 (2认同)