我发现了有关缓存破坏Aurelia和SystemJS应用程序的散乱github问题和文章;但是,我并没有取得100%的成功。一个systemjs插件技术有两次攻击url param的副作用。此外,url params似乎并不认为所有浏览器都没有使用缓存资源。
从我的角度来看,最好的,100%可靠的解决方案是将应用程序部署到不同的路径。例如,将版本和构建时间添加到网址路径,https://my.domain.com/v1.0.0b20161011_120001/index.html,https://my.domain.com/v1.0.0b20161011_120122/index.html
当前推荐的技术,插件或其他缓存Aurelia应用程序的过程是什么?
答案 0 :(得分:2)
如果您想在修改Aurelia应用程序后不断刷新它,可以查看以下主题:
https://github.com/aurelia/framework/issues/94
Aaike于2015年5月8日发表评论:
在导入之前更改index.html以添加扩展名 aurelia-bootstrapper
<script>
var systemLocate = System.locate;
System.locate = function(load) {
var System = this;
return Promise.resolve(systemLocate.call(this, load)).then(function(address) {
if(address.lastIndexOf("html.js") > -1) return address;
if(address.lastIndexOf("css.js") > -1) return address;
return address + System.cacheBust;
});
};
System.cacheBust = '?bust=' + Date.now();
System.import('aurelia-bootstrapper');
</script>
您也可以根据shaunluttin在https://github.com/aurelia/framework/issues/94帖子中的建议,制作一个将版本号附加到捆绑文件的gulp任务。
var gulp = require('gulp');
var replace = require('gulp-replace');
var fs = require("fs");
var buildNumberFile = 'build/build-number.txt';
var filesToChange = [
'build/bundles.js',
'build/paths.js',
'config.js',
'package.json'
];
gulp.task('cache-bust', function () {
// get the current build number
var contents = fs.readFileSync(buildNumberFile, 'utf8');
version = parseInt(contents);
// bump the current build number
version = version + 1;
fs.writeFile(buildNumberFile, version);
//
// matches "dist
// matches 'dist
// matches "dist1
// matches 'dist12
//
var outputDirectoryRegex = /([\"|\']dist)([0-9]*)/g;
// replace the build number in appropriate files
gulp.src(filesToChange, { base: './' })
.pipe(replace(outputDirectoryRegex, '$1' + version))
.pipe(gulp.dest('.'));
});
答案 1 :(得分:0)
选项1并不完全有效 选项2适合我。我只需要将outputDirectoryRegEx更改为
var importer = factory.newResource(NS, 'Importer', 'farmerjoe@email.com');
var importerAddress = factory.newConcept(NS, 'Address');
importerAddress.country = 'Singapore';
importerAddress.grower_temp = factory.newRelationship(NS, 'Grower', 'grower_banana@email.com');
importer.address = importerAddress;
console.log('address is: ' + importer.address.country); // access it
importer.accountBalance = 0;
因为我的内容是wwwroot /