angularjs 如何使用Grunt-Asset-Fingerprint刷新缓存

z31licg0  于 12个月前  发布在  Angular
关注(0)|答案(2)|浏览(106)

我试图解决我的Angular网站中的一个问题,当我添加一个页面或进行更改时,由于缓存,它不会显示给用户。做了一些阅读后,我明白我想做的是创建一个指纹。
我看了看周围,似乎grunt-asset-fingerprint可以做到这一点。我已经下载了该软件包并尝试运行它。然而,我有两个问题:

  • 它似乎只复制一个文件到资产Map文件(事实上,这是我的冰授权文件),我会认为它会复制所有的?
  • 我不知道下一步该怎么做,我需要在文件名中添加指纹来避免缓存问题吗?我在网上找不到太多的文档。

任何帮助都将非常感谢!我的grunt配置的相关部分和assets.json文件的输出如下。谢谢!!

module.exports = function(grunt) {

  grunt.initConfig({

    pkg: grunt.file.readJSON('package.json'),
      
    assetFingerprint: {
      options: {
        algorithm: 'md5',
      },
      dist: {
        src: ["dist/**/*"],
        dest: "dist/"
      },
    }
      
  });

  grunt.loadNpmTasks('grunt-contrib-jshint');
  grunt.loadNpmTasks('grunt-contrib-uglify');
  grunt.loadNpmTasks('grunt-contrib-cssmin');
  grunt.loadNpmTasks('grunt-contrib-watch');
  grunt.loadNpmTasks('grunt-contrib-copy');
  grunt.loadNpmTasks('grunt-contrib-clean');  
  grunt.loadNpmTasks('grunt-processhtml');
  grunt.loadNpmTasks('grunt-contrib-imagemin');
  grunt.loadNpmTasks('grunt-contrib-htmlmin');    
  grunt.loadNpmTasks('grunt-newer');
  grunt.loadNpmTasks('grunt-asset-fingerprint');
};

字符串

assets.json

{
  "dist/": "./dist-dec2ce4621028dc1bd5g081ea11d1aff"
}

gkl3eglg

gkl3eglg1#

我可以使用以下结构成功地将哈希值附加到app.js文件中:

assetFingerprint: {
  "options": {
    "manifestPath": "dist/assets.json",
    "findAndReplaceFiles": [
        "index.html"
    ],
    "keepOriginalFiles": false
  },
  "dist": {
    "files": [
      {
        "expand": true,
        "cwd": "dist",
        "src": "app.js",
        "dest": "dist"
      }
    ]
  }
}

字符串
这也将更新index.html文件中对app.js的引用。你必须确保files块中使用的路径与你的目录结构一致。

iecba09b

iecba09b2#

参考grunt-rekai,这可以解决文件重命名,并有更多的选项.
https://www.npmjs.com/package/grunt-rekai

相关问题