Обработка клиентской или серверной стороны?

Так, я плохо знаком с динамическим веб-дизайном (мои сайты были главным образом статичны с некоторым PHP), и я пытаюсь изучить новейшие технологии в веб-разработке (который, кажется, Ajax), и я задавался вопросом, если Вы передаете много данных, лучше создать страницу на сервере и "продвинуть" его пользователю, или лучше "вытянуть" необходимые данные и создать HTML вокруг этого на стороне клиента с помощью JavaScript?

Строго говоря, я использую CodeIgniter в качестве своей платформы PHP и jQuery для JavaScript, и если я хотел отобразить таблицу данных пользователю (динамично), был бы это быть лучше отформатировать использование HTML CodeIgniter (составьте таблицы, добавьте классы CSS к элементам и т.д.), или было бы лучше просто служить необработанным данным с помощью JSON и затем встроить его в таблицу с jQuery? Моя интуиция говорит, чтобы сделать это сторона клиента, поскольку это сохранило бы пропускную способность, и страница, вероятно, загрузится более быстрый с новой оптимизацией JavaScript, которую все эти браузеры имеют теперь, однако, затем сайт повредил бы для кого-то не использование JavaScript...

Спасибо за справку

16
задан Nick 17 June 2010 в 17:29
поделиться

6 ответов

Поздравляем с переходом на динамические сайты! Я бы сказал, что для создания макета на стороне клиента должны быть выполнены следующие условия (само собой разумеется, что вы всегда должны делать такие вещи, как фильтрация запросов к БД и контроль прав доступа на стороне сервера):

  • Клиентский браузер и возможности подключения в подавляющем большинстве случаев использования
  • SEO и деградация мобильных / устаревших браузеров не является большой проблемой (намного проще, если вы синтезируете HTML-сервер на стороне сервера)

. Даже в этом случае создание макета на стороне клиента делает тестирование намного сложнее. Это также вызывает довольно неприятные проблемы с синхронизацией. На сайте AJAX, который загружает частичные файлы, вы можете никогда не узнать, если часть страницы ошибается, но при регулярной компоновке на стороне сервера вся страница перезагружается при каждом запросе. Это также добавляет дополнительные проблемы для обработки ошибок / тайм-аутов, обработки сеансов / файлов cookie, кэширования и навигации (браузер назад / вперед).

Наконец, немного сложнее создать постоянные URL на случай, если кто-то захочет поделиться ссылкой со своими друзьями или добавить ссылку в закладки для себя. Я предлагаю обходной путь в своем сообщении в блоге здесь , или вы можете использовать заметную кнопку «постоянная ссылка», которая отображает динамически отображаемую постоянную ссылку.

В целом, особенно в начале, я бы сказал, что следует придерживаться более кошерного, лучше поддерживаемого, более обучаемого, традиционного подхода к объединению части сервера HTML. Затем окунитесь в некоторый AJAX здесь и там (возможно, начните с проверки формы или автозаполнения), а затем двигайтесь дальше.

Удачи!

9
ответ дан 30 November 2019 в 21:53
поделиться

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

Помните также, что написать Javascript, который работает во всех браузерах (включая портативные), сложнее, чем на той же стороне сервера в PHP. И не забывайте, что «новые оптимизации JavaScript» не применимы в той же степени к браузерам портативных устройств.

2
ответ дан 30 November 2019 в 21:53
поделиться

Лучше делать как можно больше на стороне сервера, потому что 1) вы не знаете, будет ли у клиента включен JavaScript, и 2) вы не знаете, насколько быстрой будет обработка на стороне клиента. Если у них медленный компьютер, и вы заставляете их обрабатывать весь сайт, они будут изрядно расстроены. JavaScript / jQuery предполагается использовать только для улучшения вашего сайта, но не для его обработки.

3
ответ дан 30 November 2019 в 21:53
поделиться

Это зависит от вашего целевого рынка и цели вашего сайта.

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

На сайтах, где важна поддержка no-js (общедоступные веб-сайты и т. Д.), Вы можете использовать резервный сервер. В таких ситуациях вы в конечном итоге дублируете код, но выгода очень полезна.

Для продвинутых веб-приложений вы можете решить, стоит ли делать JS требованием потери (очень) небольшого числа пользователей. Для меня, если у меня есть некоторый контроль над целевым рынком, я делаю это требованием и двигаюсь дальше. Почти никогда не имеет смысла тратить массу времени на поддержку небольшого процента потенциальной аудитории. (Если время не потрачено на доступность , которая отличается и ОЧЕНЬ важна независимо от того, сколько людей входит в эту группу на вашем сайте.)

Важно помнить, что прикоснитесь к DOM как как можно меньше , чтобы выполнить работу. Это часто означает создание HTML-строки и использование одного действия append для добавления ее на страницу, а не циклического просмотра большой таблицы и добавления по одной строке за раз.

2
ответ дан 30 November 2019 в 21:53
поделиться

Гораздо лучше делать тяжелую работу на стороне сервера.

В CodeIgniter вы создаете представление, перебирая все строки таблицы, добавляя классы и все остальное, что вам понадобится. Нет никакой причины делать это в Javascript.

Javascript - это болезненный язык с неудачным синтаксисом. Зачем вам загружать страницу, а затем выполнять вызов AJAX для загрузки некоторых JSON-объектов в таблицу - ума не приложу. Для этого нет никаких причин.

Javascript (и jQuery) предназначен для улучшения работы конечного пользователя. Заставьте вещи скользить, вспыхивать, исчезать! Он не предназначен для обработки данных даже при самых незначительных нагрузках. Опыт конечного пользователя будет дерьмовым, потому что вы полагаетесь на его машину для обработки всех данных, когда у вас есть сервер, который бесконечно более способен и даже разработан специально для этого.

5
ответ дан 30 November 2019 в 21:53
поделиться

Я много занимаюсь разработкой приложений AJAX и могу сказать вам это по своему опыту. хороший баланс между ними является ключевым.

обрабатывают необработанные данные на стороне сервера, но используют javascript для внесения любых необходимых изменений. такие как разбиение на страницы, сортировка столбцов, чередование строк и т. д.

Мне очень нравится делать все в AJAX, хех ... но есть несколько недостатков в том, чтобы делать это с использованием AJAX, и это SEO. поисковые системы не читают javascript, поэтому для рейтинга страницы вашего сайта я бы сказал, что все данные обслуживаются на стороне сервера, а затем отформатированы и выглядят круто на стороне клиента.

Причина, по которой я так люблю AJAX, заключается в том, что он резко ускоряет использование вашего приложения пользователем, поскольку он загружает только те данные, которые вам нужно загрузить, а не загружать всю страницу каждый раз, когда вы что-то делаете. .. вы можете делать целую кучу вещей, таких как скрытие / отображение строк / столбцов (здесь мы говорим о манипуляциях с таблицами, потому что вы упомянули таблицу), и даже с этими действиями отображения / скрытия добавляйте действия удаления, когда вы нажимаете кнопку удаления row или button он удаляет эту строку не только визуально, но и в базе данных, и все это делается с помощью вызовов AJAX к коду на стороне сервера.

короче.

необработанные данные: серверная сторона отправляет клиенту необработанные данные в формате html (таблицы для табличных структурированных данных, однако я делаю все остальное в div и других гибких тегах html, делаю только таблицы для данных в стиле столбцов / строк)

форматирование данных: на стороне клиента, которое также включает любые средства взаимодействия с данными. добавление к нему, удаление из него, его другая сортировка и т. д. Это позволяет добиться двух вещей. SEO и пользовательский опыт (UX).

2
ответ дан 30 November 2019 в 21:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: