1) loaderを --------------------------------------- このloaderはmax-ageでブラウザにcacheされる。 2) このloaderを起動して、Server側にコードを リクエストする。("load"コマンド) その際に、Serverに送るデータは、localStorageと sessionStorageに蓄えているキャッシュCodeのKeyである。 これで、どのCodeをブラウザ側で持っているか Server側で調べられる。 またこのloaderのversion番号もServer側へ送る。 3) Server側で、送られてきたloaderのversion番号が、 最新のものであるかチェックする。 もし最新でない場合、"reload-loader"フラグを クライエントに返して、3b)を実行する もし最新である場合、必要なデータを クライエントに返して、4)を実行する 3b) loaderをreloadする("loader"コマンド) "reload-loader"フラグが立っていたら、 xhrを用いて、loaderをreloadする。 javascriptをロードする際に、scriptタグとxhrは キャッシュを共有している。 scriptタグをブラウザ側に、 max-age=86000でjavascriptをキャシュしてしまっても、 xhr.setRequestHeader('Cache-Control', 'max-age=0')で javascriptをリロードできる。 ロードしたloaderを実行して、2)からやり直す。 2)-3)-3b)のシークエンスが無限ループにならないように、 カウントをとって、制限値に到達したらスクリプトをabortする。 4) メインCodeを実行する もし元々なかったら、Server側から返ってきたデータに 入っているはずである。このmain()を実行する。 Server側から返ってきたデータの中にあるCodeをキャッシュするのは このmain()の中で行う。(loaderの仕事ではない)