我们正在使用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
}
...
答案 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
。