Какие-нибудь большие сайты, использующие Client Side XSLT? - PullRequest
22 голосов
/ 08 ноября 2008

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

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

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

У меня вопрос: существуют ли сайты с большим именем или большим трафиком, использующие этот подход, и если да, то какие ограничения / извлеченные уроки вы от него извлекли?

Спасибо интернету, Zach

Ответы [ 7 ]

13 голосов
/ 09 мая 2009

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

В Firefox любой javascript, который использует document.write, разрушит DOM. Кроме того, плагин noscript для firefox останавливает xsl на стороне клиента. В обоих случаях пользователь ничего не увидит. Кажется, нет способа обнаружить такую ​​ошибку, поэтому отступление не будет работать.

В IE, если у вас есть что-то, что делает 30-кратное перенаправление к чему-то другого источника (переход от http к https или пересечение поддоменов), вы получите ошибку за нарушение политики того же источника, Вы на самом деле не нарушаете ту же политику происхождения, но IE действует как вы. Например, если вы перейдете на http://foo.example.com/login и при этом перенаправит 302 на https://bar.example.com/login.xml, IE будет обрабатывать xsl, как если бы он пришел с bar.example.com, и обрабатывать xml, как если бы он пришел с foo.example.com. Поэтому вам нужно будет вернуться к мета-обновлению для ваших перенаправлений.

Это то, что я придумал с макушки головы. Это хорошая идея, но помните об этих проблемах.

6 голосов
/ 08 ноября 2008

Я не могу рассказать вам подробно, как это реализовано, но World of Warcraft довольно большой и высокий трафик, и их веб-сайт реализован, как вы описываете.

3 голосов
/ 09 ноября 2008

Я не знаю ни одного крупного публичного веб-сайта, использующего XSLT-преобразование на стороне клиента (ну, кроме World of Warcraft, упомянутого Джоэлом :-). Поэтому я не могу ответить на ваш вопрос напрямую.

Однако время от времени я сам размышлял над одним и тем же вопросом, и у меня есть гипотеза, что число таких сайтов в Интернете должно быть очень близко к нулю. : -)

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

2 голосов
/ 06 февраля 2010

В настоящее время я работаю над несколькими второстепенными страницами на стороне клиента XSLT, все на шведском языке (проекты lillemanfestivalen.se, resihop.nu и beta) Больше всего меня беспокоило, что Google не индексирует содержимое моих страниц, а только XML без преобразования. Однако, поскольку я запустил resihop.nu неделю назад, он отображается в Google с преобразованием ! : D

Теперь моя другая проблема - это Facebook и другие социальные сайты, которые не понимают, как с этим справиться. Я все же, однако, думаю, что верхние стороны больше, чем нижние. Невероятная скорость и разделение, которые я получаю, потрясающие. А с помощью resihop.nu я даже не разрабатываю отдельный API, я просто указываю разработчикам на сам сайт. (Там будет больше работы, чтобы сделать это хорошо, хотя)

2 голосов
/ 03 февраля 2009

Компания, в которой я работал в 2001 году, выпустила серверный продукт, в котором реализована именно та архитектура, которую вы описываете. У нас был очень хороший успех, переложив обработку на клиентов. Кроме того, выполняя обнаружение клиентов с помощью агента пользователя HTTP, мы смогли использовать обработку XSL на стороне сервера для обслуживания очень специфических клиентов, таких как японские сотовые телефоны. Я думаю, что сайты / услуги / продукты, которые используют эту технику, делают это довольно прозрачно для клиентов. Тем не менее, я думаю, что в последнее время наблюдается тенденция выполнять обработку на стороне сервера, чтобы вам не пришлось ни полагаться, ни тестировать конкретные реализации XSL для различных клиентов, а получать поддержку некоторых расширений XSL, которые вы не сможете использовать при поддержке подавляющего большинства браузеров.

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

0 голосов
/ 09 мая 2009

Я могу быть предвзятым, когда говорю это, но работая над веб-приложением, которое делает это, я ненавижу это. Единственная причина, по которой это даже жизнеспособно, заключается в том, что клиенты только IE6 +. Даже тогда есть проблемы с этим. Я нахожу, что XSLT очень сложен, и могу предложить, если вы собираетесь сделать это, чтобы получить хороший инструмент для отладки и редактирования XSLT. Почему бы не использовать JSON и jquery? Должен быть более стандартным и менее изменчивым на стороне клиента.

0 голосов
/ 18 марта 2009

Я согласен с ответом Илии. Я думаю, что использование XSLT на стороне клиента - сложная работа. Вы должны сделать много QA для этого. Но в то время как со стороны сервера, вы этого не делаете. Вы должны заботиться обо всех типах клиентов и возможностях при использовании клиентской части. Может быть вероятность того, что ваш код может сломаться при использовании клиентского XSLT.

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