За последние 24 часа нас посетили 63217 программистов и 1743 робота. Сейчас ищут 1059 программистов ...

Опять вопрос по архитектуре

Тема в разделе "PHP для новичков", создана пользователем Evpatiy, 23 мар 2016.

  1. Evpatiy

    Evpatiy Новичок

    С нами с:
    11 ноя 2015
    Сообщения:
    43
    Симпатии:
    0
    Ситуация.
    При загрузке страницы надо делать тяжелый запрос к базе. Кажется логичным использовать аякс.
    Вопрос.
    Канонично верно формировать готовый хтмл на сервере и передавать на клиент, или передавать данные в более легком формате (типа json) и уже на клиенте парсить и рисовать элементы dom?
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    это что за запрос такой?
     
  3. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Смотря какая задача, для клиента легче получить готовый HTML.
    Ты аяксом будешь проверять время от времени готова ли выборка?
     
  4. Evpatiy

    Evpatiy Новичок

    С нами с:
    11 ноя 2015
    Сообщения:
    43
    Симпатии:
    0
    Ну если б я сумел сформулировать вопрос, я бы в гугле ответ нашел :))
    Вся надежда на местных экстрасенсов и интуитов.
     
  5. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Evpatiy они в отпуске, так что выкладывай подробности.
     
  6. Evpatiy

    Evpatiy Новичок

    С нами с:
    11 ноя 2015
    Сообщения:
    43
    Симпатии:
    0
    Это понятно что сильно зависит. А вообще принято как? Ничего проверять время от времени не буду, просто зашлю запрос и подожду ответа.
     
  7. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    смотри не попади неожидано на timeout где-то.

    От задачи выбирают алгоритм, если всё разом, то проще HTML выдать.
    Так что нужно вникать как всё происходит и замерять.
     
  8. Evpatiy

    Evpatiy Новичок

    С нами с:
    11 ноя 2015
    Сообщения:
    43
    Симпатии:
    0
    То есть какого-то стандарта, который выбирают при прочих равных не существует?

    В моем случае выборка достаточно маленькая, основная нагрузка уходит на субд. Так что по замерам пофигу вообще.
     
  9. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    задача -> алгоритм, всё упирается в ограничения.

    если пользователь закрывает станицу не дождавшись загрузки, значит надо его как-то развлекать в это время
     
  10. Period

    Period Новичок

    С нами с:
    29 дек 2014
    Сообщения:
    148
    Симпатии:
    1
    С чего это? Аякс нужен, когда запрос делают уже после загрузки страницы. Просто делайте запрос и всё. Насколько он тяжёлый? Если есть возможность кэшируйте результаты. Если нет, меняйте структуру БД.
     
  11. Evpatiy

    Evpatiy Новичок

    С нами с:
    11 ноя 2015
    Сообщения:
    43
    Симпатии:
    0
    Понятно, спасибо. Тогда на клиента пойдет хтмл, чтобы не перегружать жабаскрипт - он и так у меня нечитаемый сейчас.
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    что это за запрос такой тяжелый, расскажи.
     
  13. Evpatiy

    Evpatiy Новичок

    С нами с:
    11 ноя 2015
    Сообщения:
    43
    Симпатии:
    0
    Во-первых, информация сводная по множеству таблиц собирается - там по факту не один запрос. Во-вторых, база большая - таблицы по несколько сот тысяч записей.
     
  14. Period

    Period Новичок

    С нами с:
    29 дек 2014
    Сообщения:
    148
    Симпатии:
    1
    Если этот запрос должен делаться каждый раз при загрузке страницы, а не когда пользователь произведёт какое-то событие, то аякс вас не спасёт, а, наоборот, увеличит нагрузку на сервер. Потому что будет повторно произведена вся инициализация, будет создано два подключения к БД, по сути получится, что открыли не одну, а две страницы: одну лёгкую, другую тяжёлую. Операций выйдет больше.
     
  15. Evpatiy

    Evpatiy Новичок

    С нами с:
    11 ноя 2015
    Сообщения:
    43
    Симпатии:
    0
    Пользователь клацает по кнопке, открывается страница на которую надо вывести актуальную информацию. Получается - при загрузке страницы.
    А почему не спасет? Так ждать секунд 10-15 при загрузке, а если распараллелить, то часть инфы подгружается сразу и пользователь занят.
    Опять же там информация не из одного источника.
     
  16. Period

    Period Новичок

    С нами с:
    29 дек 2014
    Сообщения:
    148
    Симпатии:
    1
    Теперь понятно. Тут вариантов мало. Я в таких случаев использую страшные и осуждаемые всеми фреймы. В верхнем написано ждите, а в нижнем грузится вся страница. После загрузки убиваю их. Но это старая привычка, когда аякс ещё не был сильно кроссбраузерным.
     
  17. Evpatiy

    Evpatiy Новичок

    С нами с:
    11 ноя 2015
    Сообщения:
    43
    Симпатии:
    0
    Кстати, а почему фреймы объявили вне закона? Раньше использовали во всю и горя не знали.
     
  18. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Повеяло 2004 годом...

    Автор, ты все правильно понимаешь:
    Погляди, как работает тот же GMAIL. Сначала грузится страничка и заглушка с прогрессбаром, потом, секунд через N почта.

    Пост номер 6666. Слава Сатане и все такое.
    [​IMG]
     
  19. Evpatiy

    Evpatiy Новичок

    С нами с:
    11 ноя 2015
    Сообщения:
    43
    Симпатии:
    0
    Нуу, чувааак.... Так слил пост номер 6666! Надо же было подготовиться.
     
  20. Period

    Period Новичок

    С нами с:
    29 дек 2014
    Сообщения:
    148
    Симпатии:
    1
    Когда задействованы фреймы, то при переходе по ссылке не обновляется адресная строка браузера. В результате можно скопировать ссылку только на главную страницу.

    Отсюда же с поисковиками проблемы. Они отдают ссылки не на страницу со всеми фреймами, а на один фрейм. В результате сайт открывается без навигации, чистый контент.

    Добавлено спустя 9 минут 47 секунд:
    Старая технология не значит плохая. В плане производительности мой метод выигрывает. Гмэил безбожно тормозит на старых компьютерах.
     
  21. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Спасибо, что напомнил. Я поправиль.
     
  22. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Десять минут запрос к бд? Это вообще законно?
     
  23. Evpatiy

    Evpatiy Новичок

    С нами с:
    11 ноя 2015
    Сообщения:
    43
    Симпатии:
    0
    Десять-пятнадцать секунд на все, включая обработку и передачу результата.
     
  24. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    фух, у страха глаза велики.

    А индексы есть? что говорит explain?
     
  25. Evpatiy

    Evpatiy Новичок

    С нами с:
    11 ноя 2015
    Сообщения:
    43
    Симпатии:
    0
    Там не мускул. mssql через 1С.
    Но там уже нечего оптимизировать. Следующий этап просто постоянно держать актуальные данные в отдельных таблицах.