バックグラウンド:
私は、少なくとも 1 日に 1 回、本番環境にデプロイされる単一ページの JavaScript Web サイトを持っています。それは妥当な量のトラフィックを取得し、ユーザーがチェックアウトして JavaScript が XHR を介してバックエンドと対話するまで、かなりの時間そこにとどまります。
問題:
デプロイ後、ブラウザーにロードされた JavaScript はバックエンド (この場合は Rails) と互換性がなくなる場合があります。
可能な解決策:
a)定期的にアセット パイプラインのフィンガープリントを比較し、window.confirm とリロード リクエストが同じでない場合は比較します。
b) XHR リクエストで X-JS-fingerprint ヘッダーを送信します。互換性がない場合は、409 Conflict が返され、JavaScript によってエラーがトリガーされ、window.confirm がリロードされます。
c) 2 つのバックエンドを実行します。1 つは新しい JS と新しいバックエンド コード(SERVER-1)ですぐに展開され、もう 1 つは古い JavaScript XHR 要求形式を引き続きサポートします(SERVER-2)。b)と同様に、X-JS-fingerprint ヘッダーが送信されますが、409 の代わりに 307 一時リダイレクトが SERVER-2 に送信され、要求が完了します。古いセッションがすべてクリアされると、SERVER-2 が展開され、再び必要になるまでシャットダウンされます。
誰かがこの問題について以前に考えたことがあるなら、私は興味があります。この件についてご意見がありましたら、お知らせください。