gulp:自动添加版本号以请求防止浏览器caching

我通过在服务器上直接构build源代码文件来部署我的项目。 为防止caching问题,最佳做法可能是添加一个唯一编号来请求url,请参阅: 防止Web应用程序升级时的浏览器caching ;

在npm版本库中,我无法find自动添加版本号的请求的工具。 我问是否有人发明了这样的工具。

可能的实施可能如下:

我有一个文件index.html在src/文件夹,以下脚本标记

  <script src="js/app.js<!-- %nocache% -->"></script> 

在构build期间,它被复制到dist/文件夹,并且评论被自动增量编号取代

  <script src="js/app.js?t=1234"></script> 

你可以使用gulp-version-number 。 它可以通过将参数附加到URL来将版本号添加到HTML文档中的链接脚本,样式表和其他文件。 例如:

 <link rel="stylesheet" href="main.css"> 

变为:

 <link rel="stylesheet" href="main.css?v=474dee2efac59e2dcac7bf6c37365ed0"> 

您甚至不必指定占位符,就像您在示例实现中显示的那样。 它是可configuration的。

用法示例:

 const $ = gulpLoadPlugins(); const versionConfig = { 'value': '%MDS%', 'append': { 'key': 'v', 'to': ['css', 'js'], }, }; gulp.task('html', () => { return gulp.src('src/**/*.html') .pipe($.htmlmin({collapseWhitespace: true})) .pipe($.versionNumber(versionConfig)) .pipe(gulp.dest('docroot')); }); 

看起来你可能有不lessselect。

https://www.npmjs.com/package/gulp-cachebust https://www.npmjs.com/package/gulp-buster

希望这可以帮助。

你可以使用gulp-rev模块。 这会为文件附加一个版本号,版本号是文件内容的散列,所以只有当文件改变时才会改变。

然后输出一个包含文件(如Scripts.jsScripts-8wrefhn.js.之间映射的清单文件Scripts-8wrefhn.js.

然后在返回页面内容时使用一个辅助函数来映射正确的值。

我已经使用了上述过程。 不过还有另一个模块gulp-rev-all ,它是gulp-rev-all的分叉扩展,它可以做更多的工作,例如自动更新页面中的文件引用。

文档在这里:

  • gulp-rev: https : //github.com/sindresorhus/gulp-rev
  • gulp-rev-all: https : //www.npmjs.com/package/gulp-rev-all