Ситуация. При загрузке страницы надо делать тяжелый запрос к базе. Кажется логичным использовать аякс. Вопрос. Канонично верно формировать готовый хтмл на сервере и передавать на клиент, или передавать данные в более легком формате (типа json) и уже на клиенте парсить и рисовать элементы dom?
Смотря какая задача, для клиента легче получить готовый HTML. Ты аяксом будешь проверять время от времени готова ли выборка?
Ну если б я сумел сформулировать вопрос, я бы в гугле ответ нашел ) Вся надежда на местных экстрасенсов и интуитов.
Это понятно что сильно зависит. А вообще принято как? Ничего проверять время от времени не буду, просто зашлю запрос и подожду ответа.
смотри не попади неожидано на timeout где-то. От задачи выбирают алгоритм, если всё разом, то проще HTML выдать. Так что нужно вникать как всё происходит и замерять.
То есть какого-то стандарта, который выбирают при прочих равных не существует? В моем случае выборка достаточно маленькая, основная нагрузка уходит на субд. Так что по замерам пофигу вообще.
задача -> алгоритм, всё упирается в ограничения. если пользователь закрывает станицу не дождавшись загрузки, значит надо его как-то развлекать в это время
С чего это? Аякс нужен, когда запрос делают уже после загрузки страницы. Просто делайте запрос и всё. Насколько он тяжёлый? Если есть возможность кэшируйте результаты. Если нет, меняйте структуру БД.
Понятно, спасибо. Тогда на клиента пойдет хтмл, чтобы не перегружать жабаскрипт - он и так у меня нечитаемый сейчас.
Во-первых, информация сводная по множеству таблиц собирается - там по факту не один запрос. Во-вторых, база большая - таблицы по несколько сот тысяч записей.
Если этот запрос должен делаться каждый раз при загрузке страницы, а не когда пользователь произведёт какое-то событие, то аякс вас не спасёт, а, наоборот, увеличит нагрузку на сервер. Потому что будет повторно произведена вся инициализация, будет создано два подключения к БД, по сути получится, что открыли не одну, а две страницы: одну лёгкую, другую тяжёлую. Операций выйдет больше.
Пользователь клацает по кнопке, открывается страница на которую надо вывести актуальную информацию. Получается - при загрузке страницы. А почему не спасет? Так ждать секунд 10-15 при загрузке, а если распараллелить, то часть инфы подгружается сразу и пользователь занят. Опять же там информация не из одного источника.
Теперь понятно. Тут вариантов мало. Я в таких случаев использую страшные и осуждаемые всеми фреймы. В верхнем написано ждите, а в нижнем грузится вся страница. После загрузки убиваю их. Но это старая привычка, когда аякс ещё не был сильно кроссбраузерным.
Повеяло 2004 годом... Автор, ты все правильно понимаешь: Погляди, как работает тот же GMAIL. Сначала грузится страничка и заглушка с прогрессбаром, потом, секунд через N почта. Пост номер 6666. Слава Сатане и все такое.
Когда задействованы фреймы, то при переходе по ссылке не обновляется адресная строка браузера. В результате можно скопировать ссылку только на главную страницу. Отсюда же с поисковиками проблемы. Они отдают ссылки не на страницу со всеми фреймами, а на один фрейм. В результате сайт открывается без навигации, чистый контент. Добавлено спустя 9 минут 47 секунд: Старая технология не значит плохая. В плане производительности мой метод выигрывает. Гмэил безбожно тормозит на старых компьютерах.
Там не мускул. mssql через 1С. Но там уже нечего оптимизировать. Следующий этап просто постоянно держать актуальные данные в отдельных таблицах.