#angular #typescript
#angular #typescript
Вопрос:
Я работаю с api, который содержит много данных (сейчас более 10 тыс. и растет с каждым днем). Я получаю их все с сервера, а затем фильтрую со временем (также я использую разбивку на страницы для отображения 10 данных на каждой странице). Но я думаю, что это не так хорошо для производительности. Возможно ли отфильтровать их перед получением всех данных? Например, я хочу получить данные, которые были загружены за последние 30 дней, и когда пользователь нажимает кнопку, получает еще 30 дней. Я не очень хорошо говорю по-английски, поэтому, вероятно, я допустил несколько ошибок. я надеюсь, вы могли бы понять и помочь мне.
Комментарии:
1. в Rest api вам нужно обновить rest api, есть много способов .. попробуйте изучить graphql api …!
2. Фильтрация должна выполняться на стороне сервера. Итак, вам нужно: использовать другие методы api или создать новый для фильтрации данных.
3. Как эмпирическое правило, вы должны фильтровать и, возможно, сортировать данные как можно ближе к тому месту, где они находятся. Если данные находятся в базе данных (например, sql server), то вам следует фильтровать данные на уровне сервера базы данных (в запросе на извлечение). С каждым дальнейшим шагом фильтр становится все дороже. Следующей конечной точкой в этой последовательности будет фильтрация в памяти в конечной точке веб-интерфейса. И это еще один шаг по сравнению с тем, что было бы на уровне клиента в браузере. Поэтому измените свою конечную точку и разделите код, чтобы принять параметры фильтра и фильтровать как можно ближе к данным.
Ответ №1:
Если вы можете изменить код сервера, вы могли бы добавить некоторые параметры в свою точку входа (что-то вроде url?limit=50
, чтобы ограничить до 50 записей)
Если нет, вы обязаны фильтровать то, что получаете со своего сервера.
Комментарии:
1. Я знаю этот метод, но я хотел бы услышать другие методы, если они существуют. Спасибо за ваш ответ
Ответ №2:
У вас должен быть доступ к вашему серверу, добавьте предложение «TAKE» в список, который вы отправляете обратно клиенту, где он сообщает базе данных вернуть около 50 лучших записей.
Кроме того, вы можете использовать HTTP_INTERCEPTOR в качестве промежуточного программного обеспечения, чтобы перехватить запрос до того, как он достигнет сервера, или перехватить ответ до того, как он достигнет вашей «подписки».
Прочитайте о перехватчике, это отличный и рекомендуемый способ обработки http-запросов. Вот вам и угловой перехватчик.
Также прочитайте об угловых преобразователях, вы можете использовать их для повышения производительности и загрузки данных до начала машинописной части жизненного цикла компонента. Вот вам угловой распознаватель.
Удачи!