|
1 / 1 / 0
Регистрация: 08.03.2013
Сообщений: 114
|
||||||||||||||||
Оптимизация вывода большого (более 7000) количества записей на странице13.02.2020, 09:09. Показов 4836. Ответов 22
Метки нет (Все метки)
Здравствуйте.
Прошу совета, как сделать более оптимальным решение. Имеется справочник КБК. Модель:
Планировал сделать следующим образом - на странице выводится в компактном виде список КБК из справочника SprKBKBudgetRevenues, возле каждой записи кнопка "Ввести" по которой данныая запись записывается в таблицу DataBudgetRevenues. Сейчас не могу для себя определиться как выводить данные на страницу? На данный момент реализовано в виде двух циклов первый для вывода в таблицу на странице записей из DataBudgetRevenues, ниже второй цикл для вывода записей из справочника SprKBKBudgetRevenues. Основная проблема в том, что в справочнике более 7500 записей. Общий вес страницы более 3,5 Мб. Поэтому загрузка происходит долго и медленно. Функционально все работает так как мне нужно, но явно не оптимально. Хотел бы услышать любые советы по тому, как можно было бы оптимизировать вывод данных. Вот так вывожу в HTML
0
|
||||||||||||||||
| 13.02.2020, 09:09 | |
|
Ответы с готовыми решениями:
22
Оптимизация большого количества NPC на карте Оптимизация обработки большого количества объектов Оптимизация большого количества пользовательских элементов управления |
|
163 / 138 / 35
Регистрация: 25.11.2015
Сообщений: 910
|
|
| 13.02.2020, 09:30 | |
|
постраничный вывод
0
|
|
|
1 / 1 / 0
Регистрация: 08.03.2013
Сообщений: 114
|
||
| 13.02.2020, 10:28 [ТС] | ||
|
Есть вариант подсказать такой поиск по модели SprKBKBudgetRevenues где поиск только по полям CODE и NAME. Или ссылку на stackoverflow.com
0
|
||
|
163 / 138 / 35
Регистрация: 25.11.2015
Сообщений: 910
|
||
| 13.02.2020, 10:42 | ||
|
Все работает нормально, если все нормально написано, а не костылями на велосипедах. В контроллере получаешь данные для страничного вывода и поиска, проводишь выборку и отдаешь ее в представление. Ничего сложного.
0
|
||
|
1 / 1 / 0
Регистрация: 08.03.2013
Сообщений: 114
|
|||
| 13.02.2020, 10:50 [ТС] | |||
|
Но тогда нужно по идее организовать возможность поиска записи в БД по двум полям силами JS. А я в JS вообще ни как - только начал изучать. Поэтому и спрашиваю - есть возможность дать ссылку на пример или показать здесь?
0
|
|||
|
163 / 138 / 35
Регистрация: 25.11.2015
Сообщений: 910
|
|
| 13.02.2020, 11:34 | |
|
1. Учи JS. Но работать в MVC с JS не очень интересно.
2. Переделай на постраничный вывод через контроллер. Я думаю так будет лучше и быстрее, не надо будет насиловать БД выгрузкой толстых запросов. Примеры, ссылки и пр. я не даю принципиально. Пока сам не научишься - будешь все время спрашивать. А если работать по методу Ctrl+C => Ctrl+V, но ничему не научишься
0
|
|
|
1 / 1 / 0
Регистрация: 08.03.2013
Сообщений: 114
|
||
| 13.02.2020, 11:37 [ТС] | ||
|
В любом случае, спасибо. Если не разберусь с поиском, то реализую постарничку
0
|
||
|
163 / 138 / 35
Регистрация: 25.11.2015
Сообщений: 910
|
|||||||
| 13.02.2020, 13:26 | |||||||
|
Ссылку на урок чего? Постраничного вывода со стороны сервера? Или клиента? Если сервера, то смотри мое предыдущее сообщение п.2. Если что-то непонятно или не получается, выкладываешь код - кто-то да поможет. Если клиента, то смотри п.1 Пока ты сам не начнешь уверенно работать с JS, выкидывать тебе какой-то рабочий код нету смысла, потому что ты его просто скопируешь и следующий твой вопрос будет: памагитя люди добрые, сами мы не местные, я скопировал и ничего не заработало. А все потому, что ты его просто не понимаешь. Вот кусок кода для поля фильтра по которому идет фильтрация полей таблицы с постраничным выводом.
1. это ангуляр, в частности тут реактивная форма 2. filter: FormContol;
0
|
|||||||
|
1 / 1 / 0
Регистрация: 08.03.2013
Сообщений: 114
|
||||
| 13.02.2020, 13:50 [ТС] | ||||
|
Я решил написать свою функцию поиска данных в таблице, сейчас мне кажется этот вариант будет более востребован пользователю, чем постраничный поиск. Там все равно дофига страниц появляется. Если выводить даже по 10 записей на странице = 758 страниц. Ни кто так искать не захочет. С коллегами обсудил - проще сделать функцию поиска данных в таблице БД по коду или названию. Поэтому сейчас курю https://metanit.com/sharp/mvc5/10.3.php и далее по разделу. На сию у меня пока не проходит сам запрос к БД. Пытаюсь понять где накосячил.
0
|
||||
|
163 / 138 / 35
Регистрация: 25.11.2015
Сообщений: 910
|
|||
| 13.02.2020, 14:54 | |||
|
Ты не нагружаешь канал лишними данными. Ты работаешь с MVC. У тебя 7000 записей. Что это значит: контроллер забирает 7000 записей и в разметке делает 7000 итераций по foreach. А теперь, на сайт заходят 100 пользователей, ты представляешь какая это нагрузка на сервер? Поэтому я сразу и сказал про постраничный вывод через контроллер. Контроллер получает данные, делает выборку, выбирает первую страницу и отдает представление. Все. Есть поля фильтрации? их можно передать в контроллер. Есть допольнительные параметры для поиска - тоже самое. Надо вторую страницу - есть кнопки пагинатора. Но это хорошо, если оптимизировать сайт под SEO. При этом все фильтра для сортировки, пагинация и прочая муть легко пишутся в параметрах запроса адресной строки и тогда при нажатии кнопки "Назад" в браузере ты переходишь на предыдущий результат поиска. С моей точки зрения для MVC это самый нормальный вариант. Далее, если хочешь больше красоты, то надо делать через JS. Но в MVC такая работа - это костыли на велосипедах. Объясняю почему. Контроллер должен отдавать partial view для таблицы, а на странице через ajax ты их будешь загружать. Для этого надо писать отдельный api контроллер (это если по феншую), данные по фильтрации и пагинации хранить в JS. Да, все будет красиво и плавненько показываться, и даже нагрузка на сервер станет меньше, но есть одно маленькое НО. Ты сразу забываешь про SEO. При нажатии кнопки "Назад" ты уходишь назад. А для регионов с хреновым интернетом - это важный аспект. И самый главный минус - эти вот красивые танцы с бубнами с аяксом, jquery и прочими вещами намного быстрее и лучше делаются, используя не MVC, а JS-фреймворки. Причем разработка идет быстрее и на бэкенде и на фронтенде. При этом, нельзя даже сказать, что SEO такого сайта рухнет, а MVC + ajax - это будет 100%
0
|
|||
|
1 / 1 / 0
Регистрация: 08.03.2013
Сообщений: 114
|
|||||||||
| 13.02.2020, 15:28 [ТС] | |||||||||
|
Вот эта строчка:
Я использую проект MVC с Core 3.0. Может тут какой то другой способ подключения Аякса? Добавлено через 6 минут Аналогично с поиском. Грубо говоря у меня справочник позиций, которые использует специалист. Он должен их ввести. Я хочу облегчить ему работу, чтобы он вводил не вручную из бумажного справочника, а выбирал из электронного. Поэтому искать он будет. Но заставлять его лапатить 750+ страниц - это издевательство над сотрудником. Как вариант. Тогда сейчас так и попробую. Спасибо! Но все же хотелось бы попробовать с Аяксом - поиск через JS запрос
0
|
|||||||||
|
163 / 138 / 35
Регистрация: 25.11.2015
Сообщений: 910
|
||||
| 13.02.2020, 15:46 | ||||
|
Если не сильно жмет, то доделаю совою работу и может чего накалякаю как шаблон. Добавлено через 7 минут по крайней мере на том же метаните вполне нормальное пособие есть по кору https://metanit.com/sharp/aspnet5/
0
|
||||
|
1 / 1 / 0
Регистрация: 08.03.2013
Сообщений: 114
|
||||||||||||||
| 13.02.2020, 16:00 [ТС] | ||||||||||||||
|
Вот кстати SQL скрипты для создания таблиц в БД. Вдруг пригодятся. Единственное - там внешние ключи не все нужны. Но не нужные и не выполняться, поэтому не стал убирать.
0
|
||||||||||||||
|
4693 / 2701 / 734
Регистрация: 02.08.2011
Сообщений: 7,226
|
||
| 13.02.2020, 20:09 | ||
|
0
|
||
|
1 / 1 / 0
Регистрация: 08.03.2013
Сообщений: 114
|
||
| 14.02.2020, 09:56 [ТС] | ||
|
Пока тут общались - спецы потестировали, постраничный вывод не очень комфортен и все равно затратен по времени. Сейчас пилю вывод основных разделов на одной странице (он маленький) и делаю поиск по коду и названию. Меня @yurickas убедил, что лучше реализовать поиск, чем насиловать сервер большой выборкой. Если кто столкнется с похожей проблемой - я остановился на https://dotnet.today/ru/aspnet... earch.html В моем случае это более оптимальное решение, т.к. позволяет снизить количество выводимых в запросе строк до вменяемых размеров. Т.к. я ввожу ограничение на количество введенных в поисковую строку символов (через длинну в символах поискового запроса). Но спс за совет )
0
|
||
|
4693 / 2701 / 734
Регистрация: 02.08.2011
Сообщений: 7,226
|
||
| 14.02.2020, 10:27 | ||
0
|
||
|
1 / 1 / 0
Регистрация: 08.03.2013
Сообщений: 114
|
||
| 14.02.2020, 11:06 [ТС] | ||
|
В моем случае третий вариант оказался самым удобным для спецов и самым быстрым по времени заполнения документа в итоге. А коряво или красиво - это не для большого круга пользователей, тут важна эффективность и удобство работы. Я облегчаю работу, а не на выставку работу готовлю. Работает без сбоев, обертки и защиты от дурака сделаны, удобно, время и силы экономит. Что еще нужно для счастья?
0
|
||
|
163 / 138 / 35
Регистрация: 25.11.2015
Сообщений: 910
|
|
| 14.02.2020, 17:20 | |
|
0
|
|
|
1 / 1 / 0
Регистрация: 08.03.2013
Сообщений: 114
|
||
| 15.02.2020, 20:31 [ТС] | ||
|
Спасибо огромное за помощь. Реализовал без JS, все на MVC. ) Кстати и отклик страниц быстрый и вес страницы небольшой.
0
|
||
|
163 / 138 / 35
Регистрация: 25.11.2015
Сообщений: 910
|
|
| 18.02.2020, 15:02 | |
|
1
|
|
| 18.02.2020, 15:02 | |
|
Помогаю со студенческими работами здесь
20
Оптимизация хранения большого количества объектов в Dictionary Оптимизация insert в таблицу большого числа строк (100000 и более) UPDATE большого количества записей Поиск большого количества записей Ускорение отображения большого количества записей. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|