■Chromeの場合
読み込む場合にかかった時間 125ms~200ms
ローカルストレージから読み込む場合 25ms~40ms
■iPhoneの場合
読み込み
Wi-Fi 280ms~400ms
電話回線 800ms~1200ms
ローカルストレージ
130ms~200ms
通信環境によって、色々変わりそうだけど、iPhoneだと大きく違う!
早いぜっ!
アプリケーションキャッシュにすればもしかして全部解決なのかも…
--add [2012/8/24]
スマートフォン向けのサイトなら、jQueryをよみこむのはXMLHttpRequestじゃなくて、scriptタグを生成する方がよさそう。その場合はscript要素のonLoadイベントで読み込み後の処理を開始するといいはず。(試してない)
参考:[JavaScript] [高速化] JSファイルの非同期読み込み。遅延ロードっていうのか?
- //jQueryを読み込んだ後に最初に呼ぶ関数
- function start(){
- //jQuery読み込み後の処理
- }
- //ローカルストレージからjQueryを読み込む
- var jQ = window.localStorage.getItem('jQuery');
- if(jQ === null){
- //ローカルストレージにない場合
- //jQueryファイルを読み込む
- loadJQuery();
- }else{
- //ローカルストレージにある場合
- try{
- //ローカルストレージに保存してある文字列をJavaScriptとして処理
- eval(jQ);
- if(typeof jQuery === 'undefined'){
- //ローカルストレージのjQueryがうまく動かなかった場合は読み込み直し
- throw new Exception();
- }
- start();
- }catch (e){
- //evalでエラーが出た場合は読み込み直し
- loadJQuery();
- }
- }
- //jQueryを読み込んでstart関数を呼ぶ
- function loadJQuery(){
- var xmlhttp = new XMLHttpRequest();
- xmlhttp.open("GET", 'jQueryファイルへのパス', true);
- xmlhttp.onreadystatechange = function(){
- if(xmlhttp.readyState === 4 && xmlhttp.status === 200){
- //読み込み成功時
- var str = xmlhttp.responseText;
- //文字列として読み込んでローカルストレージに保存
- window.localStorage.setItem('jQuery', str);
- //JavaScriptとして処理
- eval(str);
- start();
- }else if(xmlhttp.readyState === 4 && xmlhttp.status !== 200){
- //読み込み失敗時
- }
- };
- xmlhttp.setRequestHeader("X-Requested-With", "XMLHttpRequest");
- xmlhttp.send();
- }
0 件のコメント:
コメントを投稿