ExtJs 应用程序缓存警告
ExtJs Application Cache warning
我有一个用 ExtJs 编写的单页应用程序。我没有使用应用程序缓存,但是当应用程序启动时,我在 Chrome:
中看到以下警告
[Deprecation] Application Cache API use is deprecated and will be removed in M82, around April 2020. See https://www.chromestatus.com/features/6192449487634432 for more details.
几年前,这个问题已在 Sencha 论坛 (here and here) 上多次发布。唯一的回应来自一位非 Sencha 发帖人,他说 "should be ok." 不完全是您希望得到的答案。
有没有人知道如何摆脱这个警告?考虑到我没有明确使用应用程序缓存,这听起来好像 ExtJs 可能在后台用它做一些事情。这就是我关心的。
我决定调查这个问题,因为我觉得这个问题很有趣。
简短的回答是,它不会以任何方式影响您的应用程序,除非您明确使用 applicationCache
。
详情:
即使您只是尝试调用 window.applicationCache
属性
也会出现警告
applicationCache
有什么用?它缓存静态文件(js 和 css),使您的应用程序可以离线工作。这个技术已经被ServiceWorker的取代了。使用 applicationCache 的缓存工作如下(简短描述,full on MDN):
- 您创建了一个特别组成的清单...
- 并在页面
html
标签的 manifest
属性中设置它的路径
- 之后,来自该清单的文件将保存在 applicationCache
在 Sencha 应用程序中,这是脚本 https://docs.sencha.com/extjs/6.2.0/classic/src/Microloader.js.html 的结果,它
注入您的页面。
在这个文件中,一个内置的 applicationCache 包装器和创建监听器被分配给 applicationCache
。这些侦听器的处理程序更改包装器内的状态并调用 notifyUpdateReady
方法,后者又调用全局 appupdate
事件。
同时,这些代码都是抽象的,对applicationCache的整体运行几乎没有影响。
如有疑问,您可以模拟禁用applicationCache。在 if (_cache){...
之前的 checkAllUpdates
方法中设置调试器并覆盖 _cache (_cache = undefined;
)。然后return控制权交给浏览器。什么都不会发生。
我使用 SenchaFiddle 示例测试了所有这些。
那里根本不使用缓存。它没有清单
我重申结论 - 如果您没有明确使用 applicationCache - 您无需担心。您可以通过查看页面代码并查找清单连接来检查它是否被您使用。也可以在控制台执行如下代码
window.applicationCache.status
如果结果为 0,则缓存未在您的应用程序中初始化
您可以在 app.json
中关闭 appCache
:
/**
* Settings specific to production builds.
*/
"production": {
"output": {
"appCache": {
"enable": true, // <- change this to false and rebuild
"path": "cache.appcache"
}
},
我有一个用 ExtJs 编写的单页应用程序。我没有使用应用程序缓存,但是当应用程序启动时,我在 Chrome:
中看到以下警告[Deprecation] Application Cache API use is deprecated and will be removed in M82, around April 2020. See https://www.chromestatus.com/features/6192449487634432 for more details.
几年前,这个问题已在 Sencha 论坛 (here and here) 上多次发布。唯一的回应来自一位非 Sencha 发帖人,他说 "should be ok." 不完全是您希望得到的答案。
有没有人知道如何摆脱这个警告?考虑到我没有明确使用应用程序缓存,这听起来好像 ExtJs 可能在后台用它做一些事情。这就是我关心的。
我决定调查这个问题,因为我觉得这个问题很有趣。
简短的回答是,它不会以任何方式影响您的应用程序,除非您明确使用 applicationCache
。
详情:
即使您只是尝试调用 window.applicationCache
属性
applicationCache
有什么用?它缓存静态文件(js 和 css),使您的应用程序可以离线工作。这个技术已经被ServiceWorker的取代了。使用 applicationCache 的缓存工作如下(简短描述,full on MDN):
- 您创建了一个特别组成的清单...
- 并在页面
html
标签的manifest
属性中设置它的路径 - 之后,来自该清单的文件将保存在 applicationCache
在 Sencha 应用程序中,这是脚本 https://docs.sencha.com/extjs/6.2.0/classic/src/Microloader.js.html 的结果,它 注入您的页面。
在这个文件中,一个内置的 applicationCache 包装器和创建监听器被分配给 applicationCache
。这些侦听器的处理程序更改包装器内的状态并调用 notifyUpdateReady
方法,后者又调用全局 appupdate
事件。
同时,这些代码都是抽象的,对applicationCache的整体运行几乎没有影响。
如有疑问,您可以模拟禁用applicationCache。在 if (_cache){...
之前的 checkAllUpdates
方法中设置调试器并覆盖 _cache (_cache = undefined;
)。然后return控制权交给浏览器。什么都不会发生。
我使用 SenchaFiddle 示例测试了所有这些。 那里根本不使用缓存。它没有清单
我重申结论 - 如果您没有明确使用 applicationCache - 您无需担心。您可以通过查看页面代码并查找清单连接来检查它是否被您使用。也可以在控制台执行如下代码
window.applicationCache.status
如果结果为 0,则缓存未在您的应用程序中初始化
您可以在 app.json
中关闭 appCache
:
/**
* Settings specific to production builds.
*/
"production": {
"output": {
"appCache": {
"enable": true, // <- change this to false and rebuild
"path": "cache.appcache"
}
},