2012-04-22 3 views
0

Я ищу оптимизацию своего приложения. Он использует Twitter и API Facebook и загружает большие файлы для отображения на экране пользователя. Прямо сейчас, я запускаю сценарий линейно, вызывая один файл, который включает оба вызова API с использованием AJAX и загрузку всей информации на экран. Будет ли быстрее для меня разделить два вызова API на два разных файла, а затем загружать их отдельно с помощью AJAX? Таким образом, если один ответ был длиннее, а другой, тем быстрее будет отображаться.Загрузка удаленных элементов вместе или отдельно?

спасибо.

Если это имеет значение, я использую вызовы PHP и CURL для API.

ответ

1

Конечно, было бы лучше, если бы звонки AJAX не зависели друг от друга. Вы также можете сделать это со стороны PHP, используя curl_multi_init, который выполняет HTTP-вызовы в paralell.

Пример из PHP инструкции:

<?php 
// create both cURL resources 
$ch1 = curl_init(); 
$ch2 = curl_init(); 

// set URL and other appropriate options 
curl_setopt($ch1, CURLOPT_URL, "http://lxr.php.net/"); 
curl_setopt($ch1, CURLOPT_HEADER, 0); 
curl_setopt($ch2, CURLOPT_URL, "http://www.php.net/"); 
curl_setopt($ch2, CURLOPT_HEADER, 0); 

//create the multiple cURL handle 
$mh = curl_multi_init(); 

//add the two handles 
curl_multi_add_handle($mh,$ch1); 
curl_multi_add_handle($mh,$ch2); 

$active = null; 
//execute the handles 
do { 
    $mrc = curl_multi_exec($mh, $active); 
} while ($mrc == CURLM_CALL_MULTI_PERFORM); 

while ($active && $mrc == CURLM_OK) { 
    if (curl_multi_select($mh) != -1) { 
     do { 
      $mrc = curl_multi_exec($mh, $active); 
     } while ($mrc == CURLM_CALL_MULTI_PERFORM); 
    } 
} 

//close the handles 
curl_multi_remove_handle($mh, $ch1); 
curl_multi_remove_handle($mh, $ch2); 
curl_multi_close($mh); 

?> 
+0

Не знал о curl_multi_init, спасибо. – Kevinatclutr

+0

Этот 'curl_multi_select' меня немного беспокоит. Бесконечная петля? –