2017-11-16 13 views
0

マイ・セイルズ・アプリケーションは本番環境のjavascriptファイルを更新しません。 は、私は、生産上の帆を始めています:セイルがハード・リフレッシュなしでキャッシュをクリアしない

NODE_ENV =生産を永遠にapp.js

を開始するが、私はウェブサイトを開くと、私はすべての変更を参照してくださいいけません。たとえ私がウェブサイトを再起動しても。変更は、Ctrl + F5でハードリフレッシュした後にのみ適用されるか、キャッシュを手動でクリアします。

ただし、ローカルで動作します。

これはおそらくキャッシュを持つもので、そのブラウザはキャッシュの更新/クリアを強制されません。それを解決するには?

マイタスク/設定/帆-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を使用していないので、私はこれにイサキのデフォルトを変更:私は見当がつかない

/tasks/register/default.js 

module.exports = function (grunt) { 


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

どこを見ていますか?

+1

代わりにpm2を使用することをお勧めします。それははるかに良いと完全です!第2に、制作モードに向けた面倒な作業は、JS/CSSファイルの変更を監視しません。これは、制作前のすべてを縮小するためです。あなたのコード/スタイルに変更が反映されていることを確認するには、通常 'sails lift 'を使うべきです。あなたのパイプラインが間違っているのは、Gruntがコンパクトになっている/観る前に醜いので... – paulogdm

+0

ありがとう。私は不平を変更し、質問を更新しました。これは、私が欲しかったことを達成するのに役立ちませんでした。私の変更はまだハードリフレッシュなしでは適用されません。 – mansim

+0

私はまた、pm2をインストールして使用しました - まだ何も変わりません。 – mansim

答えて

2

私はこのように今それを修正した:

タスクに/設定/帆-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ファイルを生成し、ブラウザのリロードを行います。