0

由于这个原因,我一直在挠头

我已经使用 gulp-rev 将 hash 设置为所有 html 文件的名称,它们都在 manifest file 中匹配。我也使用 gulp-rev-collector 来匹配所有更新的哈希。

我确定如果客户端文件的任何内容发生了变化,我在 gulp 构建后得到了新的散列文件名,但浏览器没有更新并请求新文件,它仍然使用旧的缓存文件,直到我清理缓存和硬重新加载。这是下面的简化代码:

gulp-rev

gulp.task('minify:html', function () {
var options = {
  removeComments: true,
  collapseWhitespace: true,
  collapseBooleanAttributes: false,
  removeEmptyAttributes: false,
  removeScriptTypeAttributes: true,
  removeStyleLinkTypeAttributes: true,
  minifyJS: true,
  minifyCSS: true
};
return gulp
.src([paths.src.html, '!./node_modules/**/*.html', '!./templates/**/*.html', '!./index.html', 
'!./dist/**/*.html']) //  views  
.pipe(htmlmin(options))
.pipe(rev())
.pipe(gulp.dest('./dist'))
.pipe(rev.manifest())
.pipe(gulp.dest('./dist/rev/html'))

})

修订分布视图

gulp.task('revDistViews', function () {
  return gulp.src(['./dist/rev/**/*.json', './dist/views/*.html'])
    .pipe( revCollector({
      replaceReved: true,
    }) )
    .pipe( gulp.dest('./dist/views') );
})

吞咽构建

gulp.task('build', function (callback) {
runSequence('clean:dist', 'clean:views', 'scss', 'concat:js', 'file:include', 'copy:lib', 
'copy:locales', 'copy:img', 'minify:html', 'minify:index', 'minify:scripts', 
'revImages','minify:css', 'rev', 'revDistViews','revScripts', callback)
})

我可以看到内置 /dist 文件夹后的哈希值发生了变化。但 Chrome 仍然使用旧缓存而不是新文件

客户端可以使用任何解决方案吗?

注意:响应头中没有设置缓存策略

4

0 回答 0