我有一个用ExtJs编写的单页应用程序。我没有使用应用程序缓存,但是当应用程序启动时,我在Chrome中看到以下警告:
[不推荐使用]不建议使用应用程序缓存API,并将在2020年4月左右在M82中将其删除。有关更多详细信息,请参见https://www.chromestatus.com/features/6192449487634432。
这个问题已经在几年前的Sencha论坛(here和here)上多次发布。唯一的回应是来自非Sencha的海报,说“应该没问题”。并非您希望的答案。
有人知道如何消除此警告吗?考虑到我没有显式使用应用程序缓存,这听起来好像ExtJs可能在后台对其进行了处理。这就是我所关心的。
答案 0 :(得分:3)
我决定研究这个问题,因为我发现这个问题很有趣。
简短的回答是,除非您明确使用applicationCache
,否则它实际上不会以任何方式影响您的应用程序。
详细信息:
即使您只是尝试调用window.applicationCache
属性,也会出现警告
applicationCache
的用途是什么?它缓存静态文件(js和css)以使您的应用程序脱机工作。该技术已被ServiceWorker所取代。使用applicationCache进行缓存的工作方式如下(简短描述,full on MDN):
manifest
标签的html
属性中设置其路径在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"
}
},