###前提
postsというテーブルがあり、そこからレコードを取得するSQLがAとBの2つあります。
###質問
さてAとBを取得するとき、下記方法2の方が速度面においては方法1よりも常に良いですよね?
方法1はPHPの処理が順番に実行されるために2つとも終わるまでコンテンツを表示できませんが、方法2ならそれぞれが実行されるから、という考えです。
この考えについて、問題、弊害、間違いなどございましたら教えて頂けませんでしょうか。
たとえばデータベースの負荷を考えると方法1の方がいいとか、可読性は方法1の方がいいとか、そういった比較によるご意見をお伺いできましたら幸いです。
###方法1
1回の通信でAとBをまとめて取得する
var URL = 'http://...'; var DATAS = ['A'=>'a','B'=>'b']; function get_A_and_B(){ $.ajax( {url:URL, type:'POST', data:DATAS} ) .done( function( res_A_and_B ) { res_A_and_B = JSON.parse( res_A_and_B ); console.log( 'Aのレコード', res_A_and_B['A'] ); console.log( 'Bのレコード', res_A_and_B['B'] ); }); }
###方法2
2回の通信を同時にwhen内で実行しそれぞれ取得する
var URL = 'http://...'; var DATA_A = 'a'; var DATA_B = 'b'; $.when( get_A(), get_B() ).done( function( res_A, res_B ){ console.log( 'Aのレコード', res_A ); console.log( 'Bのレコード', res_B ); }); function get_A(){ const def = $.Deferred(); $.ajax( {url:URL, type:'POST', data:DATA_A} ) .done( function( res_A ) { def.resolve( res_A ); }); return def.promise(); } function get_B(){ const def = $.Deferred(); $.ajax( {url:URL, type:'POST', data:DATA_B} ) .done(function( res_B ) { def.resolve( res_B ); }); return def.promise(); }
###追記
WordPessの質問としておりましたが、特に縛る必要もないのでその部分を削除いたしました。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/14 23:11