0

URL にロケール情報が含まれている Web サイトがあり、クライアントのヘッダー Accept-Language (または各ページの選択ボックス) が言語を選択し、現在のページのローカライズされた URL にリダイレクトします。デフォルトの英語の URL は次のとおりです: http://example.com/サイトのページのロケール固有のバージョンには、ロケール値が含まれています: http://example.com/de/またはhttp://example.com/es/など。

この状況でオフライン アプリケーション キャッシュ マニフェストを指定する方法についてアドバイスをお願いします。ユーザーの URL に基づいて、オフライン ページのローカライズ バージョンをキャッシュしたいと考えています。つまり、ユーザーが英語のページにアクセスしてからスペイン語を選択すると、スペイン語のマニフェストで指定されたスペイン語の URL が (再?) ダウンロードされます。

マニフェスト ファイルの名前は、ルート ページごとにロケールごとに変える必要がありますか (en.manifest、es.manifest など)? または、各ロケールのルート URL で同じ名前のマニフェストを使用すると、ユーザーが別のロケール (およびサイズの異なるマニフェスト ファイルの可能性が高い) のページに変更された場合に再読み取りされます。Web サーバーは、マニフェスト ファイルをキャッシュしないように指定します。 (s))? または、ユーザーがロケールを変更した場合、JavaScript を介してロケール固有のマニフェストを明示的に読み込む必要がありますか?

私は、訪問者がデフォルトの英語のマニフェストで指定された URL のダウンロードを開始してから、優先ロケールを選択し、新しいロケール固有のマニフェストの読み取りをトリガーせず、選択したロケールのマニフェストの URL を読み込まないことを懸念しています。

私はいくつかの検索を行いましたが、この状況についての議論に出くわしませんでした.

4

1 に答える 1

1

これが、広く合意されたベスト プラクティスが存在するほど長く続いているかどうかはわかりませんが、あなたの質問に答えようと思います。

つまり、ユーザーが英語のページにアクセスしてからスペイン語を選択すると、スペイン語のマニフェストで指定されたスペイン語の URL が (再?) ダウンロードされます。

en.manifest と es.manifest の両方 (たとえば) にファイルがリストされている場合、そのファイルの 1 つのコピーのみがブラウザーに保持されると思いますが、現時点では確認できません。したがって、すべての共有ファイルを各マニフェストに含めることで、2 つのマニフェストをダウンロードするために最初にホームページにアクセスすることを心配する必要がなくなります。すべての静的コンテンツにはるかに将来の期限切れヘッダーがある限り、ブラウザーは、それらを再度フェッチするのではなく、ローカルキャッシュからのものを appcache に入力する必要があります。

マニフェスト ファイルの名前は、ルート ページごとにロケールごとに変える必要がありますか (en.manifest、es.manifest など)?

多くの異なる言語がある場合、すべての訪問者にすべての言語固有のファイルをダウンロードさせる意味はありません。したがって、そのシナリオでは、言語ごとに個別のマニフェストを用意して、各ユーザーがダウンロードするものをよりきめ細かく制御する必要があります。

または、各ロケールのルート URL で同じ名前のマニフェストを使用すると、ユーザーが別のロケール (およびサイズの異なるマニフェスト ファイルである可能性が高い) のページに変更された場合に再読み込みされます。Web サーバーは、マニフェスト ファイルをキャッシュしないように指定します。 (s))?

マニフェストは、更新されるたびに再読み取りされます。これにより、キャッシュ全体が破棄され、再ダウンロードされます。これを回避する方法はありません。最善の方法は、マニフェスト ファイルをあまり頻繁に更新しないことです。

または、ユーザーがロケールを変更した場合、JavaScript を介してロケール固有のマニフェストを明示的に読み込む必要がありますか?

私が知る限り、JavaScript を使用して別のmanifestマニフェスト ファイルをダウンロードすることはできません。属性によって現在表示しているページに関連付けられているファイルのみをダウンロードできます。

于 2011-12-08T01:16:58.197 に答える