私は、パフォーマンスが非常に重要な問題である Web プロジェクトに取り組んでいます。
編集:
状況:
ユーザーのワークフローに関する詳細を追加したいと思います。
- ユーザーが私のウェブサイトのウェルカム ページにアクセスし
http://example.org/
ます。 - 彼はページにアクセスするためにリンクをクリックします
http://example.org/mypage
onclick
-リンクのハンドラが実行されました。- ハンドラーは、XHR を使用してデータをロードします。
- ハンドラーは
http://example.org/mypage
動的に作成します。 FileSystem API
ハンドラーは、 at を使用してローカルに mypage を保存しfilesystem:http://example.org/mypage
ます。EDIT:(クライアント側にfilesystem:http://example.org/mypage
保存されているローカルリソースです)FileSystem
- ハンドラーは履歴を拡張し、ロケーション バーのURL を (ウェルカム ページの URL) から
History API
(ユーザーが見たいページ) に変更します。http://example.org/
http://example.org/mypage
- その間、ユーザーは別のページにアクセスします。
- その後、ユーザー
http://example.org/mypage
はロケーション バーに直接入力します。 - ブラウザは、 の代わりに
filesystem:http://example.org/mypage
(のローカルに保存されたバージョン) を表示/ロードします。つまり、ブラウザは新しいリクエストを作成せず、ローカルに保存された のコピーを使用します。http://example.org/mypage
http://example.org/mypage
http://example.org/mypage
新しいリクエストを作成する代わりに、ブラウザがページのローカルに保存されたバージョンを使用するようにするにはどうすればよいですか? 編集: - 上記のリストの #10 でやりたいことです。
編集:
私の質問:
http://example.org/mypage
クライアント側は、上記のリストの #2 から #7 で既に作成/生成されています。そのページをもう一度作成する必要はありません。そのため、ブラウザに のリクエストを作成させたくないのですhttp://example.org/mypage
。
それが私がやりたいことです:
filesystem:http://example.org/mypage
がすでに作成されている場合 (ユーザーが既に にアクセスしたことがある場合)http://example.org/mypage
:
filesystem:http://example.org/mypage
の代わりに使用しhttp://example.org/mypage
ます。さもないと:
のリクエストを送信
http://example.org/mypage
解決しようとします:
マニフェスト ファイルのフォールバック セクションを使用して次のようなことを行うことはできません: EDIT: (orgin は別として)
フォールバック: http://example.org/mypageファイルシステム:http://example.org/mypage
フォールバック ディレクティブは、ユーザーがオフラインの場合にのみ使用され、それ以外の場合は無視されるため、FileSystem に保存されているローカル バージョンをブラウザーに使用させるためです。編集:しかし、ユーザーがオンラインであっても、のfilesystem:http://example.org/mypage
代わりに使用したい。http://example.org/mypage
- 新しいリクエストを作成せず、キャッシュされたバージョンを使用するために、サーバー生成ページのレスポンス ヘッダーで Expire フィールドを使用できることを知っています。
しかし、JS と XHR を使用してクライアント側で動的にページを作成するとどうなるでしょうか。編集: (そのケースについては で説明しましたThe situation
) クライアント側でページを作成する場合、クライアントにそのページをキャッシュさせる方法はありません。FileSystem API
そのため、クライアント側に保存するためにページを手動で「キャッシュ」します。
パフォーマンスを向上させるために、ユーザーが既にローカルにアクセスしたページを保存しようとしています。ユーザーがページに再度アクセスすると、ローカルに保存された古いバージョンのページが表示され、スクリプトは XHR を作成して、その間にページが変更されたかどうかを確認します。
しかし、ブラウザでページのローカル バージョンを使用するにはどうすればよいでしょうか。生成されたページは、FileSystem API を使用してクライアント側にローカルに保存できます。生成されたページの URL を選択して、History API を使用してブラウザーのロケーション バーに表示できます。
ユーザーが別のサイトにアクセスして戻るボタンを押すと、イベント ハンドラーによって onPopState イベントをキャッチできます。
そして、そのイベント ハンドラーは、FileSystem API を使用して、動的に作成されたファイルを読み込むことができます。
しかし、ユーザーが [戻る] ボタンを使用せず、History API を使用して登録した URL をロケーション バーに直接入力した場合はどうすればよいでしょうか?
その場合、ブラウザはローカルに保存されたバージョンのページを使用せず、ブラウザはサーバーからページをロードするリクエストを作成します。