目前推荐用于缓存Aurelia(基于SystemJS)应用程序的缓存技术

时间:2016-10-12 19:34:42

标签: browser-cache aurelia systemjs jspm

我发现了有关缓存破坏Aurelia和SystemJS应用程序的散乱github问题和文章;但是,我并没有取得100%的成功。一个systemjs插件技术有两次攻击url param的副作用。此外,url params似乎并不认为所有浏览器都没有使用缓存资源。

从我的角度来看,最好的,100%可靠的解决方案是将应用程序部署到不同的路径。例如,将版本和构建时间添加到网址路径https://my.domain.com/v1.0.0b20161011_120001/index.htmlhttps://my.domain.com/v1.0.0b20161011_120122/index.html

当前推荐的技术,插件或其他缓存Aurelia应用程序的过程是什么?

2 个答案:

答案 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 /