2

PJAXまたはTurbolinksを使用するアプリケーションがある場合、新しいコードがサーバーにデプロイされるときに問題が発生します(Herokuなど)。問題は、アプリケーションにアクセスしているユーザーは、以前のバージョンのアプリケーションのJavascriptを引き続き使用しますが(既にブラウザーにロードされているため)、新しいバージョンのHTMLページを取得することです。新しいHTMLコードは、新しいJavascriptがロードされていると想定しているため、正しく機能しない場合があります。

他の人はこの問題に気づきましたか?あなたはそれについてどうしますか?これは、シングルページJavascriptアプリケーション(BackboneやEmberに基づくアプリケーションなど)でも一般的な問題のようです。Meteorは、この問題に対処する方法として、クライアントのコードを少なくともシームレスにアップグレードします。

4

3 に答える 3

1

https://github.com/rails/turbolinks/#asset-change-detectionが答えのように見えます。スクリプトタグに、data-turbolinks-trackを配置します。次に、turbolinksがページをロードすると、そのスクリプトタグが検索され、URLが変更された場合(アセットパイプラインを使用すると自動的に変更されます)、ページ全体がリロードされます。

于 2013-03-01T06:36:39.923 に答える
0

例としてpivotaltrackerを取り上げると、クライアント接続をチェックし、新しいバージョンが到着した場合はユーザーにクライアントのリロードを強制します。

アプリ内で下位互換性を提供しない限り、他にできることはありません。

于 2013-02-28T17:30:03.633 に答える
0

Pjaxを使用している場合は、追加できます

<meta http-equiv="x-pjax-version" content="v123">

あなたのヘッダーに。コンテンツ属性にサーバー定義の値を使用できます。デプロイする前に、値が更新されていることを確認してください。デプロイされると、後続のPjaxリクエストは、このヘッダーが更新されたことを確認し、Ajaxリクエストをキャンセルして、ページ全体のリロードをプルダウンします。

Turbolinks 5の場合data-turbolinks-track="reload"、ヘッダーのスクリプトとスタイルシートのリンクに追加できます。Turbolinksは、リクエストごとに変更がないかこれらのファイルを監視します。次に、デプロイ時に、Pjaxと同様に、ページ全体のリロードを要求します。

data-turbolinks-track従来のターボリンクでは、代わりに属性が必要です。

詳細については、PjaxのGitHubページ(https://github.com/defunkt/jquery-pjax)またはTurbolinks(https://github.com/turbolinks/turbolinks )を参照してください。

Turbolinks Classicの場合:https ://github.com/turbolinks/turbolinks-classic

于 2016-09-22T17:29:00.250 に答える