2017-10-30 9 views
0

私は現在、プロダクション用のスクリプトをビルドするたびに新しいJSをロードしません。React SPA force load新しいJSビルド(モバイルを含む)

私はcreate-react-appを使用しています。それを動作させる唯一の方法は、キャッシュを手動でクリアすることです。

私はwindow.location.reload(true)を入れようとしましたが、それでも最新のJSをフェッチしません。

、その後、私はそれらの

<meta http-equiv="cache-control" content="max-age=0" /> 
<meta http-equiv="cache-control" content="no-cache" /> 
<meta http-equiv="expires" content="0" /> 
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" /> 
<meta http-equiv="pragma" content="no-cache" /> 

何も作業していない私のindex.htmlでこれを入れてみてください。

ブラウザでは、特にモバイル用の新しいJS(Chrome Android、Firefox)は読み込まれません。

私はCloudflareを使用していますが、すでにpurge cacheを試しています。

ブラウザに新しいスクリプトを読み込ませるためのその他のソリューションはありますか?

おかげ

+0

これは役立つかもしれません:[ブラウザが自動的に外部JavaScriptファイルのキャッシュをクリアするとき](https://stackoverflow.com/questions/206783/when-does-browser-automatically-clear-cache-of-external-javascript-ファイル) – Adelin

+0

@Adelinこれらのソリューションは、JSでバージョンを使用しています。 manifest.jsonを使用してCSSまたはスクリプトファイルを処理する 'create-react-app' – ssuhat

答えて

0

一般的な方法は、ブラウザが消灯し、それが前にあったものとは完全に異なるファイルであると信じるものを取り出してJSファイルに一意のハッシュを置くことです。

あなたはWebPACKのを使用している場合、あなたはあなたの出力JSファイル名に[hash]を追加することができます(私はあなたが作成-反応するアプリであると仮定して):

output: { 
    filename: 'bundle.[hash].js', 
}, 
+0

私は自分のmanifest.jsonを見ていますstatic/js/main.4150f522.js私のjsonファイルは既に余分な番号を持っています。それは本当に排出する必要がありますか?私はその片方向操作を意味します – ssuhat

+0

そして、私はデフォルトで反応アプリを既に作成していると思います。ファイルをハッシュしました – ssuhat

0

私は信じてキャッシュ属性のみとなり効果index.htmlそれは依存ファイルではありません。これをjavaスクリプトファイルで行うには、レスポンスヘッダにこれらの値を書き込むために何かサーバ側で行う必要があります。あなたは、あなたのスクリプトの末尾にクエリ文字列を追加してみてください

<script src='/dist/main.js?v=123'></script> 

ようなものを参照し、リリースごとにそのバージョン番号をインクリメントすることができます。

大胆な感じがある場合は、ファイル名にhashingを追加できます。これには、ejectingの設定がcreate-react-appから設定されている可能性があります。また、取り除かずにウェブパックの設定をカスタマイズするという、いくぶん厄介なものの1つに目を通すこともできます。methods

+0

私のmanifest.json 'static/js/main.4150f522.js'を見てください。後ろに。それは本当に排出する必要がありますか?私はその片道操作を意味する – ssuhat

関連する問題