Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
392 / 294 / 121
Регистрация: 26.08.2016
Сообщений: 902

Стратегия организации обмена между браузером и сервером

27.08.2016, 11:45. Показов 1179. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!

Только начинаю заниматься PHP, в целях обучения и возможного будущего портфолио, делаю свой первый проект на голом PHP без существующих фреймворков, со стандартным взаимодействием: данные из базы данных посылаются в браузер, пользователь работает с таблицами, отредактированные данные через AJAX возвращаются серверу, где благополучно записываются в таблицу.

Основной вопрос: какова стратегия обмена объемом информации в случаях:

Пример 1:

Таблица в 10000 строк. Послать ее всю браузеру, держать в оперативке, и выводить пользователю в DOM порциями по 100 строк или послать только 100 строк, а далее по запросу или по скроллингу подкачивать данные На клиент? В первом случае мы уменьшаем количество обращений к серверу, во втором случае не загружаем клиентский компьютер.

Исходя из каких параметров делать выбор? Есть ли какие-то стандарты или вопрос вкуса и целевой аудитории: то есть рассчитан ли сайт на работу с любого маломощного девайса или используется только в корпорации с нормальным железом?

Пример 2:

При клике на таблицу должна показаться форма для расширенного редактирования данных строки. Опять же вопрос: подгрузить ли ее сразу и держать HIDDEN, либо подгружать только при клике. Здесь вопрос наверное не столько в объеме оперативки, сколько в размере DOMа.

Исходя из чего обычно принимают решения в подобных случаях? Заранее спасибо за аргументированные мнения.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.08.2016, 11:45
Ответы с готовыми решениями:

Теория, запросы между браузером и сервером
Я новичок, поэтому прошу не ругать, если вопрос глупый-глупый. Что значит, когда говорят: "API будет вызываться из других частей...

Протокол обмена данными между клиентом и сервером
Есть сервер, есть клиент, оба асинхорнные. Работают стабильно. Но гоняют только байты между друг другом, которые перекодируются в ASCII, но...

Пишу я ПО для обмена данными между сервером и клиентом
Пишу я ПО для обмена данными между сервером и клиентом. В качестве сервера выступает мой хост. Когда клиент, запущенный на хосте,...

10
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
27.08.2016, 11:50
Цитата Сообщение от renat_dmitriev Посмотреть сообщение
Таблица в 10000 строк
Вы хоть представляете, сколько оперативки съест хром?) Лучше ajax'ом посылать только то, что пользователю сейчас нужно.
Форму лучше загрузить сразу, лишней не будет, но зато при первом клике не будет тормозить
0
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
27.08.2016, 11:52
сам чистый РНР не выводит "порциями".
и кстати, 10000 строк в таблице - это чтоб юзера тупо убить на месте? он на первой тысяче сдуется
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
27.08.2016, 11:55
Цитата Сообщение от renat_dmitriev Посмотреть сообщение
Пример 1
Не нужно грузить большие количество строк к пользователю. Лучше постраничная навигация/подгрузка при прокрутке.
Цитата Сообщение от renat_dmitriev Посмотреть сообщение
Пример 2
Если данных в форме много и все они однотипные -- можно сделать одну скрытую форму и с помощью JS подставлять в неё редактируемые данные. Нет смысла для каждой строки свою форму делать.
Либо подгружать при клике, если данные под одну форму не подгонишь.
Цитата Сообщение от renat_dmitriev Посмотреть сообщение
Исходя из чего обычно принимают решения в подобных случаях?
Исходя из здравого смысла. Нет смысла, как в первом примере, грузить в браузер 10000 строк. Разве только если это отчёт какой-то.
0
392 / 294 / 121
Регистрация: 26.08.2016
Сообщений: 902
27.08.2016, 12:03  [ТС]
Цитата Сообщение от DevAlone Посмотреть сообщение
Вы хоть представляете, сколько оперативки съест хром?
Давайте подсчитаем: 10000 строк, 10 колонок, допустим по 16 байт в среднем каждое значение. Итого: 1,6 мб оперативки. По моему это вообще ничто.

Добавлено через 2 минуты
Цитата Сообщение от Para bellum Посмотреть сообщение
Не нужно грузить большие количество строк к пользователю. Лучше постраничная навигация/подгрузка при прокрутке.
В интерфейсе само собой. Вопрос о том, откуда подгружать? Держать данные в массиве js и по запросу подгружать из него, не обращаясь к серверу, или же каждый раз подгружать с сервера?

Добавлено через 3 минуты
Вобщем то, что при каждом клике пользователя скрипт будет запрашивать сервер - проблемы вызывать не должно, верно? При большом количестве пользователей на больших сайтах программисты стараются уменьшить количество обращений к серверу или никто об этом не парится и вопросы решаются более подходящими серверами?
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
27.08.2016, 12:07
Цитата Сообщение от renat_dmitriev Посмотреть сообщение
Исходя из каких параметров делать выбор?
Из ТЗ. Показывать всю таблицу сразу или частично - этот вопрос решается с заказчиком.

В целом частичный показ, конечно, выгодней по ресурсам.

Цитата Сообщение от renat_dmitriev Посмотреть сообщение
При клике на таблицу должна показаться форма для расширенного редактирования данных строки. Опять же вопрос: подгрузить ли ее сразу и держать HIDDEN, либо подгружать только при клике. Здесь вопрос наверное не столько в объеме оперативки, сколько в размере DOMа.
Можно держать одну форму расширенного редактирования. При выборе редактирования подгружать данные из таблицы или БД, после сохранения очищать форму.

Цитата Сообщение от renat_dmitriev Посмотреть сообщение
Давайте подсчитаем: 10000 строк, 10 колонок, допустим по 16 байт в среднем каждое значение. Итого: 1,6 мб оперативки. По моему это вообще ничто.
Там речь про хром (браузер), а не сервер. Если не ошибаюсь, отрисовка таблиц для браузера - достаточно ресурсоёмкая задача, особенно если таблица большая. И особенно если компьютер слабый.

Цитата Сообщение от renat_dmitriev Посмотреть сообщение
Вопрос о том, откуда подгружать? Держать данные в массиве js и по запросу подгружать из него, не обращаясь к серверу, или же каждый раз подгружать с сервера?
Лучше через AJAX.
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
27.08.2016, 12:11
Цитата Сообщение от renat_dmitriev Посмотреть сообщение
В интерфейсе само собой.
А, не так Вас понял. Тут нужно задать себе вопрос: а нужны ли клиенту все эти данные?
Если Вы делаете какое специфическое приложение, вроде управления отчётами бухгалтерами и нужен мгновенный доступ к любой строке, тогда можно подумать. Или какую-то игру.
Но, опять же -- семь раз отмерь, один раз отрежь.

Добавлено через 2 минуты
Цитата Сообщение от renat_dmitriev Посмотреть сообщение
на больших сайтах программисты стараются уменьшить количество обращений к серверу или никто об этом не парится и вопросы решаются более подходящими серверами?
И то, и другое. Оптимизацию никто не отменял. Чем меньше запросов -- тем лучше. Но в пределах разумного.
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
27.08.2016, 12:19
Цитата Сообщение от renat_dmitriev Посмотреть сообщение
Давайте подсчитаем: 10000 строк, 10 колонок, допустим по 16 байт в среднем каждое значение. Итого: 1,6 мб оперативки. По моему это вообще ничто.
Будем считать средний размер страницы 5M. 1.6M это 30% от средней страницы. Большую часть этих данных пользователь не увидит. Плюс 16 байт на колонку как-то подозрительно мало. Также помимо количества обращений к серверу нужно помнить, что вытащить из базы 100 строк легче чем 10 000.
0
392 / 294 / 121
Регистрация: 26.08.2016
Сообщений: 902
27.08.2016, 12:28  [ТС]
Цитата Сообщение от Para bellum Посмотреть сообщение
Тут нужно задать себе вопрос: а нужны ли клиенту все эти данные?
А мы заранее не знаем и даже пользователь заранее не знает. Ну например база счетов. он смотрит на нее задумчиво и думает: дай-ка я отсортирую счета по этому заказачику или по такому-то периоду. И возникает вопрос, если условные 10000 записей занимают 1,6 мб оперативки, то стоит ли обращаться к серверу?

Цитата Сообщение от Para bellum Посмотреть сообщение
И то, и другое. Оптимизацию никто не отменял. Чем меньше запросов -- тем лучше. Но в пределах разумного.
Я понял! попробую сделать это параметризировано, и чтобы этот параметр можно было менять.

Добавлено через 4 минуты
Цитата Сообщение от Jewbacabra Посмотреть сообщение
Также помимо количества обращений к серверу нужно помнить, что вытащить из базы 100 строк легче чем 10 000.
В каком смысле легче? Быстрее или что? Если 10000 записей получаются и передаются с сервера на клиент меньше чем за секунду, если мы очистили за собой память и потом до конца работы пользователя с таблицей обращений к базе больше не происходит - то проблемы вроде как нет? Но в остальном вы наверное правы.
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
27.08.2016, 12:30
Лучший ответ Сообщение было отмечено renat_dmitriev как решение

Решение

Цитата Сообщение от renat_dmitriev Посмотреть сообщение
А мы заранее не знаем и даже пользователь заранее не знает.
Вот отсюда и надо плясать. Значит все данные грузить к нему не нужно.
Цитата Сообщение от renat_dmitriev Посмотреть сообщение
думает: дай-ка я отсортирую счета по этому заказачику или по такому-то периоду
В таком случае лучше не отдавать всё в браузер. Всё можно отдать, если уверены, что они ему точно понадобятся.
0
392 / 294 / 121
Регистрация: 26.08.2016
Сообщений: 902
27.08.2016, 12:47  [ТС]
Цитата Сообщение от Para bellum Посмотреть сообщение
В таком случае лучше не отдавать всё в браузер. Всё можно отдать, если уверены, что они ему точно понадобятся.
Да, наверное вы правы. Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.08.2016, 12:47
Помогаю со студенческими работами здесь

Концепция организации работы пользователя с сервером
Доброго времени суток, есть вопрос по организации работы пользователя работы с БД. Мне кажется он банальным, но я ничего толком не смог...

Правила обмена. Отбор по организации.
написал в правилах ПКО поступление товаров и услуг перед выгрузкой Код: ...

Программа для организации обмена информации
Доброго времени суток, уважаемые Форумчане! Вынуждена просить Вашей помощи в решении нескольких задач, так как сама на данный момент не...

Выбор СУБД для организации обмена данными
такая у меня задача : есть ПК( назовем 'сервером'), который через COM порт считывает данные с оборудования ( сигнализация ), показывает...

Беготня между браузером-документами и играми на низко-среднем-высоком от силы
Доброго времени! На данный момент пользуюсь машиной Lenovo g50-80, служит с 2015-го, но раздражающие подвисания или достаточно долгие...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru