балансировка кода на стороне сервера и на стороне клиента на большом веб-сайте - PullRequest
2 голосов
/ 27 июля 2010

Давайте предположим, что я программирую Facebook (а я нет) или какой-то другой сайт, который использует большой трафик.

Наш общий формат:

  1. Все CSS находятся во внешних файлах
  2. 99% JS находится во внешних файлах
  3. Основа веб-сайтов HTML создается бэкэндом PHP / MySQL.
  4. JS функционирует для генерации DOM частей, которые обычно меняются.
  5. Наш сервер имеет встроенный API, который возвращает объекты JSON, которые передаются нашим построителям DOM (функции JS), которые принимают массив объектов JSON, скажем, список друзей, а затем генерируют ВСЕ html, используемые для отображения списка. друзей или событий и т. д.

Вопрос

  1. Это разумно?
  2. Является ли обычной практикой выделение функций JS для построения DOM, как я уже упоминал?
  3. Это масштабируемо? JS слишком медленный? (кстати, мы используем JQuery почти исключительно)

Я знаю, что он значительно снижает пропускную способность и нагрузку на сервер, поскольку сервер больше не выполняет итерацию по списку друзей (о которых он также запрашивал через MySQL) и не генерирует весь HTML, а вместо этого делает запрос и возвращает маленький объект JSON. мне кажется, что это нормально, но я бы хотел получить мнение 2/3/4 / /.

Большое спасибо!

Дайте мне знать, если мне не хватает какой-либо важной информации.

Ответы [ 3 ]

1 голос
/ 27 июля 2010

Это подход, к которому я иду. Я очень доволен этим. JS, конечно, не слишком медленный. Вам понадобится хорошая система шаблонов JS. Trimpath JS Templates - мой любимый из тех, что я пробовал.

1 голос
/ 26 января 2011

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

Я думаю, что три самые важные вещи, которые Facebook делает для достижения своего масштаба:

  1. CACHING => Memcached . Это действительно важно. Вы должны помнить, что дисковый ввод-вывод медленнее по сравнению с MEMORY (диск 5 мс / память 40-80 нс согласно моей книге ). Facebook имеет почти все активные данные в памяти. Эти старые слайды говорят, что они имеют более 5 ТБ в памяти. Это будет намного больше сейчас!
  2. HIPHOP => https://github.com/facebook/hiphop-php/wiki/
  3. ОФФЛАЙН ОБРАБОТКА => Использовать очередь сообщений, например, redis , beanstalkd , gearman , просто назвать несколько.

Некоторые другие интересные ссылки:

1 голос
/ 27 июля 2010

Учитывая, что двигатели JS постоянно совершенствуются с целью повышения производительности, я думаю, что это довольно хороший дизайн.Мы будем видеть это все чаще и чаще, так как HTML5 & Co набирает популярность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...