Для следующей довольно простой задачи: запросить список продуктов из БД и представить его на веб-странице, рассмотрим 2 установки:
Setup1: запросы сценария PHP. Весь контент создается на сервере, и вся страница возвращается клиенту.
Setup2: статический «скелет страницы» HTML, запрашивающий контент с использованием AJAX. Полученный контент анализируется на стороне клиента с помощью Javascript и отображается с использованием innerHTML или аналогичного.
Конечно, вторая настройка имеет смысл только тогда, когда у вас есть страницы, категории и теги, из которых пользователь клиента может выбирать.
Мне нужно сравнивать этих двух, по крайней мере, с помощью:
Будем очень признательны за любые мысли по этому поводу.






AJAX, вероятно, лучший выбор, когда изменяется только небольшая часть страницы.
Я бы рекомендовал начать с версии на стороне сервера, а затем построить поверх нее AJAX. Таким образом, вы также получите версию своего сайта, которая работает без javascript, который, вероятно, вам в любом случае понадобится, если вы заботитесь об индексировании в поисковых системах.
Но сначала сконцентрируйтесь на создании страницы, которая просто работает - вы всегда можете оптимизировать ее позже.
Производительность на клиенте зависит от многих факторов. Что работает в данный момент, какой браузер, что это за контент, какой CSS страницы, насколько заполнен кеш браузера, какие плагины установлены, что происходит в сети и т. д. Просто помните, что когда вы играете с числами.
Если реализация не отстой, AJAX должен победить. Среди преимуществ:
параллелизм из-за параллельных запросов на стороне клиента (т.е. вы можете использовать несколько ядер ЦП сервера для обслуживания частей одной обслуживаемой веб-страницы, что не может быть легко выполнено с помощью PHP)
обновление только небольших частей страницы происходит быстрее (меньше данных для передачи, генерации ...)
он масштабируется намного лучше, поскольку у сервера меньше работы (особенно, если вы можете переложить часть обработки, необходимой для генерации html, клиенту, а не просто доставить его)
Динамические страницы, такие как http://www.startpagina.nl/, успешно справлялись с этим задолго до недавнего увлечения AJAX (доставлен 1 статический файл, все настройки выполняются на стороне клиента - в последний раз я все равно проверял).
Конечно, вы можете испортить любой метод, и он станет медленнее, чем другой.
Вам может быть полезен следующий вопрос: Smarty Vs. Javascript / AJAX
В своем ответе на этот вопрос я поднял несколько моментов:
Вы должны использовать серверные скрипты для отображения любых данных, известных на момент загрузки страницы.. В этом случае вы знаете, что должен отображаться список продуктов. О том, что на вопрос должен быть показан ответ, известно при загрузке страницы.
Вы должны использовать только вызовы AJAX для загрузки динамических данных, которые известны нет на момент загрузки страницы.. Например, когда вы щелкаете ссылку «комментарии» под вопросом или ответом на Stack Overflow. Тот факт, что вы хотите просмотреть комментарии к конкретному вопросу, неизвестен при загрузке страницы.
Javascript должен потребовать нет для доступа к основным функциям вашего сайта.
Вы должны аккуратно снизить функциональность, когда Javascript отключен. Например, Stack Overflow отлично работает с отключенным Javascript. У вас нет доступа к предварительным просмотрам Markdown в реальном времени или уведомлениям о динамических значках, но основные функции остаются неизменными.
Один HTTP-запрос к странице, сгенерированной сервером, будет загружаться значительно быстрее, чем запрос на загрузку страницы, который выполняет пять или шесть дополнительных вызовов AJAX., особенно в соединениях с высокой задержкой (например, в сотовых сетях). См. Yahoo Лучшие практики для ускорения вашего веб-сайта.
Вы должны думать о Javascript как о бонусной функции, которая может быть отключена, а не как о чем-то, что следует использовать для создания важных частей вашего веб-сайта. Из этого правила есть исключения. Если вы хотите сделать какую-то разбивку на страницы, при которой вы нажимаете кнопку «следующая страница», а изменяется только список продуктов, AJAX может быть правильным выбором. Однако вы должны убедиться, что пользователи без Javascript не исключены из просмотра всего списка.
Нет ничего более разочаровывающего, чем когда к странице невозможно получить доступ, потому что веб-разработчик не выполнил Принцип KISS. В качестве примера возьмем Рестораны Friendly's. Я хотел проверить их меню, пока был в торговом центре, поэтому я загрузил их веб-сайт на свой iPhone только для того, чтобы узнать, что вы буквально не можете получить какую-либо значимую информацию о ресторане без Flash. Приятно иметь модные меню с крутыми десертами, летающими повсюду, но, в конце концов, я просто хотел увидеть пункты их меню. Я не мог этого сделать, потому что им требовался Flash. В этом случае могло бы помочь изящное ухудшение качества обслуживания.
Некоторые вещи в Интернете невозможно эффективно реализовать без Javascript. Отображение списка продуктов нет один из них. Если вы все еще не уверены, посмотрите, как работают другие популярные веб-сайты. Я думаю, вы обнаружите, что большинство успешных, хорошо спроектированных веб-сайтов следуют приведенным выше рекомендациям.
Я заметил, что вы пометили вопрос словом «мыло». Я согласен с утверждениями о том, что AJAX часто является лучшим решением, но избегайте SOAP, если вам не нужно его использовать. Анализировать SOAP непросто, и вы можете избежать дополнительной работы и накладных расходов на обработку на обоих концах, используя JSON.