ExtJs应用程序高速缓存警告

时间:2020-04-01 11:08:44

标签: extjs html5-appcache

我有一个用ExtJs编写的单页应用程序。我没有使用应用程序缓存,但是当应用程序启动时,我在Chrome中看到以下警告:

[不推荐使用]不建议使用应用程序缓存API,并将在2020年4月左右在M82中将其删除。有关更多详细信息,请参见https://www.chromestatus.com/features/6192449487634432

这个问题已经在几年前的Sencha论坛(herehere)上多次发布。唯一的回应是来自非Sencha的海报,说“应该没问题”。并非您希望的答案。

有人知道如何消除此警告吗?考虑到我没有显式使用应用程序缓存,这听起来好像ExtJs可能在后台对其进行了处理。这就是我所关心的。

2 个答案:

答案 0 :(得分:3)

我决定研究这个问题,因为我发现这个问题很有趣。

简短的回答是,除非您明确使用applicationCache,否则它实际上不会以任何方式影响您的应用程序。

详细信息:

即使您只是尝试调用window.applicationCache属性,也会出现警告

applicationCache的用途是什么?它缓存静态文件(js和css)以使您的应用程序脱机工作。该技术已被ServiceWorker所取代。使用applicationCache进行缓存的工作方式如下(简短描述,full on MDN):

  1. 您创建了一个特殊组成的清单...
  2. 并在页面上的manifest标签的html属性中设置其路径
  3. 之后,该清单中的文件将保存在applicationCache中

在Sencha应用程序中,这是脚本https://docs.sencha.com/extjs/6.2.0/classic/src/Microloader.js.html的结果,该脚本{ 注入您的页面。

在此文件中,将基于applicationCache的内置包装和创建侦听器分配给applicationCache。这些侦听器的处理程序更改包装器内部的状态,并调用notifyUpdateReady方法,该方法依次调用全局appupdate事件。 同时,所有这些代码都是抽象的,几乎对applicationCache的整体操作没有影响。

如有疑问,可以模拟禁用applicationCache。在checkAllUpdates之前的if (_cache){...方法中设置调试器,并覆盖_cache(_cache = undefined;)。然后将控制权返回给浏览器。什么都不会发生。

我使用SenchaFiddle示例测试了所有这些。 那里根本没有使用缓存。它没有明显的

我重复一下结论-如果您没有显式使用applicationCache-您无需担心。您可以通过查看页面代码并查找清单连接来检查是否使用了它。您还可以在控制台中执行以下代码

 window.applicationCache.status

如果结果为0,则说明您的应用程序未初始化缓存

答案 1 :(得分:3)

您可以在appCache中关闭app.json

/**
  * Settings specific to production builds.
  */
"production": {
    "output": {
        "appCache": {
            "enable": true, // <- change this to false and rebuild
            "path": "cache.appcache"
        }
    },
相关问题