有没有办法可以使用 gulp 修改我的 index.thml 以防止 CSS 缓存?

Is there a way I can use gulp to modify my index.thml to prevent CSS caching?

我有这个 gulpfile.js 代码:

gulp.task('make_prod_index', function () {
    gulp.src('index.html')
      .pipe(replace('content/bundles/css.min.css', 'content/bundles/css.min.css&12345'))
      .pipe(rename("index-prod.html"))
      .pipe(gulp.dest('./'));
});

我在想的是,如果我可以让 gulpfile 添加到 & 中,后面跟着一些每次发布时都不同的数字。

这是确保 css 不被缓存的方法吗?如果是,我如何确保每次发布时添加不同的数字?

您可以获得文件的 md5 哈希并将其附加到文件中,就像这样:

...
var md5File = require('md5-file')

gulp.task('make_prod_index', function () {
    gulp.src('index.html')
      .pipe(replace('content/bundles/css.min.css', 'content/bundles/css.min.css?' +  md5File('content/bundles/css.min.css')))
      .pipe(rename("index-prod.html"))
      .pipe(gulp.dest('./'));
});

但是,最好更改大多数缓存的文件名,以避免附加查询字符串。一些缓存会将带有查询字符串的文件视为动态文件,不会缓存它们。

可以用 gulp-rev task, for more information check the docs. It might be a bit more work depending on your solution. But from what I see you could go with something simple as gulp-rev-replace 来完成。