Как загрузить массовые данные на клиентскую сторону через javascript вызов API - PullRequest
0 голосов
/ 05 апреля 2020

У меня около 10000+ записей на моем веб-сайте. Я применил нумерацию страниц, чтобы перечислить их. Но кроме перечисления есть вид карты для закрепления списков. Затем пользователь может искать на карте. Для этого мне нужны полные данные в на стороне клиента в виде массива json. Я сделал это как

function doInBackground(){
       $.get('car/get-map-data',
          {
           'params':'$params'
           'page':page
      },
      function(data){
        if(data)
        {
          console.log(data);
        }
      }); 
    }

Это мой вызов API. И мой контроллер API равен

public function actionGetMapData($params){
        $searchModel=new CarSearch();
        $dataProvider=$searchModel->search($params);
        $models=$dataProvider->getModels();
        $mapData=array();
        foreach ($models as $key => $model) {
            array_push($mapData, $model->title);
        }
         return json_encode($mapData);
     }

У меня размер страницы 10 в поиске

$query = Car::find();
        $dataProvider = new ActiveDataProvider([
            'query' => $query,
            'pagination' => [
                'pageSize' => 10,
            ],
        ]);

Я повторяю вышеупомянутую функцию javascript, чтобы получить все данные страница за страницей на стороне клиента. Но иногда это становится очень медленным. Как я могу преодолеть это. Я хочу добавить данные для представления моей карты. следовательно, вид карты также становится медленнее. Как быстро загрузить 10000+ списков для клиента

1 Ответ

0 голосов
/ 06 апреля 2020

Как я понимаю, вы получаете только 10 элементов с каждым вызовом API. Если у вас есть 10 000 элементов, это означает, что вы делаете 1000 вызовов API для получения всех элементов. Это определенно не будет хорошо работать. Вы можете попытаться загрузить все 10 000 элементов за один go, а затем выполнить нумерацию страниц только на стороне клиента. Это будет зависеть от того, насколько быстро ваш API сможет получить эти элементы и как будет выглядеть каждый элемент. Если это простые объекты, это может сработать, но если они являются объектами со многими свойствами, размер ответа, скорее всего, станет узким местом.

В этом случае вам нужно будет выполнить поиск по API в заказ на это будет как можно быстрее.

...