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

Sails does not clear cache without hard refresh

我的 Sails 应用程序不更新 javascript 生产文件。 我开始生产了:

NODE_ENV=production forever start app.js

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

但在本地有效。

这可能与缓存有关,浏览器不会被强制 update/clear 缓存。如何解决?

我的tasks/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',
  ]);
};

我不知道下一步该看哪里。

我现在已经修复了:

在 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>'

并且在生产服务器上每次更新资产 i 运行

sails www --prod 

然后

NODE_ENV=production pm2 start app.js

这行得通。至少。这每次都会生成新版本的新缩小 javascript 文件,然后浏览器会重新加载。