没有硬刷新,Sails不会清除缓存

时间:2017-11-16 15:29:33

标签: node.js sails.js

My Sails应用程序不会更新生产中的javascript文件。 我正在开始生产帆:

  

NODE_ENV =生产永远启动app.js

但是当我打开网站时,我没有看到任何变化。即使我重新启动网站。只有在使用ctrl + F5进行硬刷新或手动清除缓存后,才会应用更改。

但在当地它有效。

这可能是缓存,浏览器不会强制更新/清除缓存。怎么解决?

我的任务/ config / sails-linker.js:

  grunt.config.set('sails-linker', {
    devJs: {
      options: {
        startTag: '<!--SCRIPTS-->',
        endTag: '<!--SCRIPTS END-->',
        fileTmpl: '<script src="%s?v='+ new Date().getTime() +'"></script>',
        appRoot: '.tmp/public'
      },
      files: {
        '.tmp/public/**/*.html': require('../pipeline').jsFilesToInject,
        'views/**/*.html': require('../pipeline').jsFilesToInject,
        'views/**/*.ejs': require('../pipeline').jsFilesToInject
      }
    },

因为我没有在制作中使用sails lift,所以我将grunt默认更改为:

/tasks/register/default.js

module.exports = function (grunt) {


grunt.registerTask('default', [
    'compileAssets',
    'linkAssetsBuildProd',
    'watch',
    'concat',
    'uglify',
    'cssmin',
    'sails-linker:prodJs',
    'sails-linker:prodJsJade',
  ]);
};

我不知道下一步该去哪儿。

1 个答案:

答案 0 :(得分:4)

我现在已经解决了这个问题:

on tasks / config / sails-linker.js添加了这个:

module.exports = function(grunt) {

  var time = new Date().getTime();

  grunt.config.set('sails-linker', {

然后在

的每一行都改变了
fileTmpl: '<script src="%s"></script>'

fileTmpl: '<script src="%s?v='+ time +'"></script>'

在每次使用资产进行更新的生产服务器上运行

sails www --prod 

然后

NODE_ENV=production pm2 start app.js

这很有效。至少。这会生成每个新的缩小的javascript文件和新版本,然后浏览器重新加载。