angular - 如何使用 Gulp-Rev 和 Gulp-Rev-Collector 正确解决浏览器缓存问题,以便更新我的 index.html 文件

标签 angular caching deployment gulp systemjs

我正在使用 systemJS 构建一个 angular2 项目。我使用 Gulp 进行部署。

我想避免让我的用户单击( Cntl + R )来删除缓存的 css 文件。

为此,我想使用 Gulp 进行文件修订。

知道我现在需要的只是更改一个 css 文件。所以我正在使用:

  • gulp-rev,重命名我的文件并创建我的manifest.json
  • gulp-rev-collector,使用 list 替换这些文件名
  • rev-del,删除旧文件。

知道我的 css 文件位于名为:public 的文件夹下。我的index.html也在public/下。

    gulp.task("revision:rename", function () {
     return gulp.src(["public/*.css"])
     .pipe(rev())
     // .pipe(revDel())
     .pipe(gulp.dest('public'))
     .pipe(rev.manifest())
     .pipe(gulp.dest("public"))
    });

   gulp.task("revision:updateReferences", ["revision:rename"], function () {
      gulp.src(["public/rev-manifest.json","public/*.css"])
      .pipe(collect({
          replaceReved: true,
          dirReplacements: {
              'css': 'public'
          }
      }))
      .pipe(gulp.dest("public"))
   });

调用这些函数,我可以正确重命名 css 文件,以及正确的 manifest.json。 但我有两个问题,

  1. 收集器不会替换我的 html 文件。我不知道如何处理这个问题
  2. rev-del,我使用时出错(我暂时评论了它)

任何帮助将不胜感激! 谢谢

最佳答案

1) 对于删除部分:

您也可以使用这个库 const revDelete = require('gulp-rev-delete-original');

并在调用 .pipe(rev()) 后像“.pipe(revDelete())”一样调用它

2)对于引用部分(更新新的哈希引用):

我使用 gulp-rev-replace lib

const revReplace = require('gulp-rev-replace'); 并在“.pipe(revDelete())”之后调用它,如“.pipe(revReplace())”

我看到您找到了解决方案,但是,只是展示了一个替代方案,也许它在将来有用。

关于angular - 如何使用 Gulp-Rev 和 Gulp-Rev-Collector 正确解决浏览器缓存问题,以便更新我的 index.html 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47076058/

相关文章:

angular - 找不到 UserCommonModalComponent 的组件工厂。您是否将其添加到@NgModule.entryComponents?

angular2/4 可观察订阅

php - 在php站点上缓存大量页面

c# - 附有堆转储的 Fluent Nhibernate 内存泄漏

deployment - Amber Smalltalk - 创建单个 .js 文件进行部署

amazon-web-services - 在AWS上托管Elasticsearch:{“error” :“You need to sign in or sign up before continuing.”}

asp.net - Angular & Asp.Net Core - 启用 2 因素身份验证

angular - alanning :role, 在 angular2-meteor 中导入问题

caching - GitLab CI - 缓存不起作用

iphone - 是否可以设置允许的最大 ios 版本