新版本发布后,ExtJS 6 app.js不会更新

时间:2017-06-13 13:02:44

标签: extjs extjs6.2

我们正在使用Extjs 6,我们正在使用sencha cmd来构建我们的应用程序。

我们正面临一个问题。每次我们发布我们的应用程序的生产版本(如6.3到6.4)时,捆绑的app.js都不会更新,浏览器会从(from disk cache)获取该文件。因此,每次我们必须告诉我们的用户,请在获得新版本后清除浏览器的缓存。 That's annoying

这是我的app.json文件。

"output": {
        "base": "${workspace.build.dir}/${build.environment}/${app.name}",
        "page": "index.html",
        "manifest": "${build.id}.json",
        "js": "${build.id}/.js",
        "appCache": {
            "enable": false,
            "update": "full"
        },
        "resources": {
            "path": "${build.id}/resources",
            "shared": "resources"
        }
    },
"production": {
        "output": {
            "appCache": {
                "enable": false,
                "path": "cache.appcache"
            }
        },
......
"cache": {
            "enable": false 
        }
...

2 个答案:

答案 0 :(得分:2)

以下两种方法可以解决您的问题:

自定义app.js文件名

        {
            "production": {
                "output": {
                    "js": "${build.id}/app_${build.timestamp}.js"
                },
                "cache": {
                    "enable": true
                },
                "js": [
                    {
                        "path": "${build.id}/app.js",
                        "bundle": true,
                        "includeInBundle": false
                    }
                ],
          "output": {
            "base": "${workspace.build.dir}/${build.environment}/${app.name}",
            "page": "index.html",
            "manifest": "${build.id}.json",
            "js": "${build.id}/app_${app.version}.js",
            "appCache": {
                "enable": false,
                "update": "full"
            },
            "resources": {
                "path": "${build.id}/resources",
                "shared": "resources"
            }

        }
    }

有了这个,您每次为应用构建app.js的新文件名时都会收到。

添加静态缓存参数

  {
        "production": {
            "loader": {
                "cache": "${build.timestamp}"
            },
            "cache": {
                "enable": true
            }
        }
    }

使用此解决方案,ExtJs会在?_dc=12345678请求中附加app.js参数。在您下次构建之前,此参数保持不变。

答案 1 :(得分:1)

我找到了解决方案:

"js": [
        {
            "path": "app.js",
            "bundle": true,
            "includeInBundle": false
        }
    ],
.....
"output": {
        "base": "${workspace.build.dir}/${build.environment}/${app.name}",
        "page": "index.html",
        "manifest": "${build.id}.json",
        "js": "${build.id}/app_${app.version}.js",
        "appCache": {
            "enable": false,
            "update": "full"
        },
        "resources": {
            "path": "${build.id}/resources",
            "shared": "resources"
        }
    },
....

这不包括生成版本中的app.js文件,并创建新的app.js文件,其最后附加的版本如下:app_6.4.js