Было бы лучше проанализировать HTML на сервере с PHP или на стороне конечного пользователя с JavaScript? - PullRequest
2 голосов
/ 14 декабря 2010

Мне нужно написать сценарий, который берет ссылку и анализирует HTML-код связанной страницы, чтобы извлечь заголовок и несколько других фрагментов данных, например, потенциально краткое описание, очень похожее на ссылку на что-то в Facebook.

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

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

У клиента только один приличный веб-сервер, и я беспокоюсь, что при разборе / анализе HTML-страниц может быть слишком много нагрузки, когда мы можем сделать это в Javascript и передать его пользователю, добавившему ссылку.

Любые советы или мысли по этому поводу были бы потрясающими. Спасибо.

Редактировать: Эти данные не попадают прямо в базу данных, они используются, чтобы помочь пользователю, автоматически заполняя описание их ссылки, которая все еще проходит мою обычную проверку перед сохранением в БД.

Ответы [ 4 ]

5 голосов
/ 14 декабря 2010

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

Синтаксический анализ HTML - не такая уж сложная задача, у вас все получится в PHP.

0 голосов
/ 14 декабря 2010

Вы можете сделать оба ....

1) PHP:

  • оформить заказ HTML DOM Parser , может быть полезно
  • или используйте php curl, а затем выполните синтаксический анализ с DOMDocument

2) JavaScript:

  • вам не нужно беспокоить ваш сервер (pro)
  • анализКонтент с JQuery прост (pro)
  • вам нужно обрабатывать междоменную политику (минусы)
0 голосов
/ 14 декабря 2010

Если вы думаете о том, чтобы клиент действительно получил и получил какой-то случайный сайт, проанализируйте его для вас в Javascript, возьмите заголовок, описание и другие данные, а затем отправьте их в вашей форме, время отправки вашей формы: станет заложником скорости сетевого подключения вашего пользователя для получения этой страницы и любых накладных расходов (вероятно, незначительных) для анализа данных. Если вы делаете это на стороне сервера, используя cURL, то вы будете разбирать документ на то, что вам нужно. лучшее решение для скорости, вероятно, состоит в том, чтобы позволить человеку ввести URL-адрес, вернуть его обратно в PHP, заставить PHP передать его сценарию Perl (в котором есть несколько злых быстрых анализаторов DOM) и получить необходимые данные обратно для сценария PERL. Исходя из личного опыта, сценарии Perl превосходят cURL в течение всего дня, а cURL, как правило, превосходит javascript, который AJAX получает с большим отрывом, просто по своей природе на более крупном канале, чем домашний пользователь.

0 голосов
/ 14 декабря 2010

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

  • Это помощник для внешнего интерфейса, а не бэкэнда (значения не сохраняются и не обрабатываются непосредственно в бэкэнде.)
  • Нагрузка лучше распределена по сравнению с локализованной на вашем сервере, также вы, вероятно, получите лучший пользовательский опыт, если конечный пользователь использует только 1 URL, а сервер - тысячи.
  • Обработка во внешнем интерфейсе также снижает вероятность выполнения вредоносного кода непосредственно на вашем сервере.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...