2011-01-17 2 views
1

Эффективное решение, которое было бы лучшим решением? Вот очень маленький пример. PHP-скрипт возвращает число в jQuery, которое необходимо проверить, если оно 1, страница должна указать «1 человек», иначе «X человек».jQuery vs. PHP - Сравнение производительности

Было бы быстрее, если бы PHP-скрипт выполнил эту проверку и вернул «х лиц», или для jQuery, чтобы сделать это после получения номера?

+4

Ответ: Это не имеет значения. Производительность должна быть вашей последней проблемой в веб-разработке. Прежде всего сделайте его надежным, функциональным, надежным и удобным. В вашем конкретном примере я бы отправил json-закодированный массив: '{num_persons: 1}', больше для предыдущих 4 причин, которые для производительности. – meagar

ответ

7

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

Как @mkoryak говорит, jQuery является clientide и PHP является сервером. Если 10^5 пользователей запрашивают это, вы можете увидеть некоторую разницу, если позволить jQuery сделать это: каждый делает это один раз (и не видит разницы), но ваш сервер получает меньше 10^5 чеков. Напротив, ваш сервер, вероятно, намного быстрее, чем ваш клиент, поэтому для каждого клиента (с несколькими или даже с одним клиентом) может быть выполнено несколько расчетов на одном компьютере (так что PHP будет вашим выбором).

Как заключает @slebetman: для небольшого числа клиентов серверный код обычно быстрее. Для очень большого количества клиентов разгрузка на клиентский код может значительно повысить производительность. Здесь вы найдете ответ @scunliffe: протестируйте свое решение с помощью stresstest!

+3

Я считаю, что это правильный ответ, но язык не слишком ясен. Первое и второе предложение должны быть в одном и том же параграфе, и вы должны разделить '..jQuery клиентский PHP на стороне serveride..' до своего собственного абзаца, потому что это ядро ​​ответа. Кроме того, я думаю, вы должны подвести итог этому предложению, предпочтительно как абзац сам по себе: «Для небольшого числа клиентов серверный код, как правило, быстрее. Для очень большого числа клиентов разгрузка работы на клиентский код может значительно повысить производительность. ' – slebetman

+0

Вы правы. Я изменю некоторые вещи, как вы предложили – Nanne

+0

«запрос»? - было ли это «просьбой»? – scunliffe

0

jquery работает на клиенте, php работает на сервере. вы не можете сравнить скорость 2, так как один даже не запускается, пока другой не будет закончен.

сделать все это в PHP

7

Правильный ответ всегда - Test/Тест это. Таким образом, вы точно знаете, что лучше.

При этом, если вы делаете базовое сравнение PHP (серверного языка) с jQuery (на стороне клиента), серверная сторона должна быть быстрее. Однако это всегда будет зависеть от того, какую логику вы пытаетесь обработать.

+1

тестирование - лучший ответ на вопрос, связанный с производительностью. –

+0

jQuery - это не язык ... –

+1

Хорошо, конечно ... Но JavaScript - это язык, а jQuery - это фреймворк, построенный поверх JavaScript. – scunliffe

0

Это зависит от вашего серверного оборудования, но я думаю, что для общей производительности вашего сайта лучше делать такие «украшения» на стороне клиента.

Редактировать: Плюс у вас меньше данных для отправки клиенту.

3

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

В этом случае я бы пошел на PHP, так как в этом браузере действительно нет причин для этого изменения после загрузки страницы (и jQuery и т. Д.).

Как общий совет - если вы не пытаетесь добавить значение к пользовательскому интерфейсу «по умолчанию» (то есть: без JavaScript), используя дополнительные «украшения» (например, слайд-шоу и т. Д.), Которые грамотно деградируют, сделайте это на сервере.)

0

Не имеет значения, действительно - узкие места производительности, вероятно, будут в другом месте.

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

0

Предполагая, что число исходит от ресурса на вашем веб-сайте OWN (а не какого-либо другого значения вашего сайта): PHP будет быстрее.

  • Нет накладных расходов (сделано при выполнении страницы)
  • Не дожидаясь события загрузки страницы, чтобы затем выполнить запрос AJAX, чтобы затем разобрать его

Если это значение с другой страницы, я все еще верю, что PHP быстрее (используя cURL/fopen [если сайт разрешает это]/и т. д.). Вы говорите о разнице в чем-то, выполняемом до того, как страница будет передана пользователю, или нажав на загрузку пользователя, и в ожидании загрузки их страницы, а затем заполнив поле.

Реально, но это зависит от того, как вы хотите, чтобы пользовательский интерфейс был. Вы хотите, чтобы он был бесшовным или загружался как можно меньше и основывался на нем при загрузке страницы?

0

Я думаю, что вы рассматриваете производительность по функциональности ... Позвольте мне сказать, что PHP является SERVER-SIDE, а jQuery - CLIENT-SIDE. Время выполнения PHP зависит от архитектуры вашего сервера и конфигурации; jQuery основан на возможностях компьютера вашего клиента. jQuery также не работает в старых браузерах или браузерах с отключенным javascript. PHP отображает стандартный HTML, поэтому все браузеры должны отображать его одинаково (очевидно, это не обсуждение проблем дизайна и совместимости).

Смежные вопросы