【问题标题】:window.caches is undefined in Android Chrome, but is available at Desktop Chromewindow.caches 在 Android Chrome 中未定义,但在桌面 Chrome 中可用
【发布时间】:2019-04-05 06:22:08
【问题描述】:

我对移动设备上 Caches API 的可用性有点困惑。

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

文档说明此 API 可用于服务工作者范围和窗口范围。

我可以毫无问题地在桌面的 Chrome 上清晰地访问它。

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

我试图用这种方式检测:

if ('caches' in window)...
if ('caches' in self)...

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

我错过了什么?

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

【问题讨论】:

    标签: android google-chrome cachestorage


    【解决方案1】:

    似乎window.caches (CacheStorage) 仅在通过 SSL 提供页面时在 Chrome 移动设备上可用。

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

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

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

    【讨论】:

    • 如果您正在开发通过自定义主机名(localhost 或 127.0.0.1 除外)提供服务的 WebApp,您可以在 Chrome-Flags 中为该主机添加例外以将其视为安全来源. chrome://flags/#unsafely-treat-insecure-origin-as-secure 这为主机名启用了 cache-api(和许多其他浏览器功能)。
    猜你喜欢
    • 2019-02-25
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    • 2020-10-01
    • 2011-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多