Текстовое содержимое и важные для пользователей значимые данные флекс-приложения по умолчанию спрятаны от поисковых роботов в глубинах бинарного кода swf-файла, поэтому они не появляются в результатах поиска даже по самому релевантному к ним запросу. Это нехорошо. Пользователи должны находить ваше приложение по его контенту — потому что ваш продукт действительно содержит эти данные, но робот Google не отображает их на странице результатов. Если вы хотите, чтобы ваше приложение находилось через Гугл, то сами должны позаботиться об эффективном способе предоставления Гуглу нужной информации.
Как включить ваш флэш-продукт в число достойных обитателей СЕРП'а — страницы с результатами поиска?
Джош Тиньяла из Yahoo! Flash Platform в своей статье “Как сделать ваше горячее RIA дружественным к поисковым движкам” разбирает такой способ поисковой оптимизации флеш-приложений. Он основан на использовании XML-данных в качестве контента страницы и XSL-трансформации. Джош анализирует пример успешной реализации этого подхода Тедом Патриком во флекс-приложении Flex Directory — списке компаний, предоставляющих услуги по Flex-разработке. Это работает. Гугл находит приложение Теда и выдает хорошо оформленный результат поиска по запросу "Flex directory". Приложение Теда идет вторым номером сразу после какой-то дорвей-заглушки.
Идея проста: предоставьте чистые текстовые данные (XML) поисковому роботу, а браузеру пользователя отдайте их же, предварительно трансформировав с помощью XSL. Так пауки Гугла получат свои тексты, а браузеры — свои пользовательские интерфейсы, построенные точно на этих же текстах. Все честно, гибко и search-engine friendly!
XSL-трансформация применяется к исходным XML-данным флекс-приложения как таблица стилей таким образом:
<?xml-stylesheet type="text/xsl" href="http://directory.onflex.org/template002.xsl"?>
Способность браузера манипулировать XML-данными через XSL — ключ к решению проблемы. Заглянув в XSL-файл, вы обнаружите, что в нем хитрый Тед заменяед XML-контент очень простой HTML-страницей, которая внедряет SWF-файл Flex-приложения при помощи знакомого нам SWFObject. Он передает флекс-приложению URL страницы при помощи FlashVars, и приложение загружает свой XML без XSL-трансформаций, точно так же, как и робот-поисковик:
var so = new SWFObject( "http://directory.onflex.org/template002.swf" , "fxtxsl" , "100%" , "100%" , "9" , "#191919"); so.addParam( "scale" , "noscale" ); so.addVariable("xmlurl", document.location ); so.useExpressInstall( "http://directory.onflex.org/expressinstall.swf" ); so.write( 'flexcontent' )
Как увидеть исходный XML-код нам, скромным обладателям браузеров? Так же, как и исходный код любой HTML-страницы — через соответствуюющий пункт меню браузера. Правый клик не даст эффекта — вы будете кликать по флекс-приложению....
Этот же подход вполне применим и для приложений Silverlight / AJAX. Которые как всегда "забудут" поблагодарить флэш-платформу за протоптанную дорожку.
И поскольку эта уже давно витающая в воздухе идея до сих пор не приобрела широкой популярности, первые применившие ее Flash / Flex разработчики получают кокурентное преимущество перед остальными, что начнут применять ее позже.
Есть смысл подумать над (полу) автоматизацией этого процесса за счет создания соответствующих шаблонов для Flex Builder'а.
В комментариях к записи хитрого Теда небезызвестный Даг Маккун сказал, что поскольку XML и XHTML — близнецы-братья, а исходный XML-контент приложения и так уже ближе скорее ко второму из них, то для пущей поисковой оптимизации есть смысл описывать контент при помощи стандартных тэгов — заголовков нескольких уровней, абзацев, выделений и т.д. Ведь Гугл так любит хорошо структурированные документы, а флэш-аппликации при разборе XML все равно, как называется тэг, лишь бы структура была соблюдена. На это Тэд ответил: отличная идея.
Запускай робота!
Хм, прикольно. Но, я так понял, что это нормально проканует если одна страница и на ней одна простая флека, которая берёт данные с текущей хтмл страницы. А как же быть, если флешка это иерархичный сайт, в каждом из разделов которого свои данные, которые не охота все набивать в содержащий данную флешку хтмл документ?
Когда-то давно делали, смотри html код, он заменяется флешем, если есть плагин.
http://www.partysalonagency.com/
весь контент как для роботов так и для флеша валяется здесь
http://www.partysalonagency.com/promotion/ http://www.partysalonagency.com/events/ http://www.partysalonagency.com/afisha/ http://www.partysalonagency.com/management/ http://www.partysalonagency.com/booking/ http://www.partysalonagency.com/aboutus/ http://www.partysalonagency.com/links/
Страницы проглоченные гугло-ботом
http://www.google.com/search?q=site:partysalonagency.com
Вообще-то Гугль очень не любит, когда браузеру отдают одно, а роботу - другое, и очень быстро банит такие сайты. Или, по крайней мере, не даёт им набрать высокий ранк.
Можно сколько угодно кричать: да у меня всё честно, имеенно эти данные и именно в таком порядке у меня будут и во Флэше! Всегда найдутся те, кто запихает в XML кучу рекламных слов вместе (а то и вместо) с контентом...
Метод сам себя изживёт...
Тоже использую метод описанный Miguel-ем. Ещё есть тег содержимое которого поисковики прекрасно видят
непропечаталось :~/ тег NOEMBED*
tearaway_Tea:
Хороший вопрос. Этот процесс наверняка нужно автоматизировать. Для каждого модуля приложения создается его текстовое представление. Конечно, придется поломать голову: какие данные стоит включать в текст, а какие скрыть, а другие может быть и добавить придется вручную. Как к страницам сайта добавляются метатэги title, keywords, description...
Потенциальная трудоемкость метода в какой-то степени отфильтровывает проекты.
Miguel - хорошая работа!
Но сейчас я вижу все кроме первой страницы сайта как ХТМЛ - решили отказаться от флэша из-за сложности поддержки?
Дом-страница сайта - первая в СЕРПе. Правда, у нее нет дескрипшена (но очевидно только потому, что нет соотв. метатэга у самой страницы).
Dendroid, прежде чем метод сам себя изживет, он должен хотя бы пожить, пройти фазы детства, отрочества, юности и зрелости.
Сама трудоемкость этого метода есть некая гарантия его живучести.
Насчет ПР - нужно будет проверить через месяца два, что с ним будет у флекс директории, и сколько при этом реальных вншних ссылок будет на нее стоять.
Ты говоришь: легко напихать спама в такой XML-контент. Но зачем? Ведь легче напихать его в простой HTML - там хотя бы ссылки будут кликабельными для юзера. Хотя... вопрос интересный. Все же не могу понять, зачем кому-то использовать для спама XML - ведь никаких преимуществ это не дает. Проще взять RSS-ленту и построить парочку сотен добротных сплогов (хотя я не очень в сплогах шарю, мог сейчас глупость сказать).
ArtCraft™, тут надо хитро печатать, с использованием html-подстановок. Ничо, я прикручу скрипт, чтобы на лету конвертил.
В чем инновация в подходе к оптимизации? Несколько иной способ (скрытые дивы) давно уже используют. В целом данный подход только лишний раз обманывает поисковик и все.
Тэд последнее время такую фигню порит. P.S. порит или порет?
Nirth™: "Порет" - верный вариант.
__etc™: Инновация тут в том, что метод чище скрытых дивов. Потому как поисковик видит точно тот же контент. Еще один побочный момент новизны - то, что это уже не просто "флэш", а сам "флекс". Да, кто-то применял, кто-то знает, но Хитрый Тед - это уже уровень Адоба, он вещает в большой рупор и его слышат многие, как и Джоша Тиньялу.
Я не говорю, что именно данная реализация XML->XSLT->Flex плоха... Сложность метода - гарантия живучести? Интересная мысль. :) Я говорю, что плох сам подход, когда браузеру - одно, а поисковику - другое. Дорвеи очень неплохо банятся гуглом. Я думаю и сплогам, которые развелись прямо у Гугла на блоггере тоже в какой-то момент резко кислород перекроют.
Рост, Дендроид правильно просек фишку - будут банить. С технической точки зрения это не белый метод, а как раз очень смахивает на обдуривание поисковиков.
Чем скрытый див-то плох? Див с контентом, флешка, и жаваскрипт-функция, выдающая содержимое дива флешке. И структурируй контент как хош:)
Sergeyev™, Dendroid™ - сейчас-то сайт Флекс-директории как раз нифига не банится! Наоборот, он находится одним из самых первых в результатах поиска.
>> Сложность метода - гарантия живучести? Интересная мысль. :)
Именно так. Просто ты упускаешь одно звено:
1. Сложность метода => 2. Относительно малое количество реализаций => 3. Гугл смотрит сквозь пальцы => 4. Гарантия живучести.
Получилось еще аж два звена, но я надюсь вы меня простите!
Блин, я уже два раза в названии этой записи то ставил, то убирал кавычки вокрук слова "белая".
Вот до чего вы меня довели, ребята. Пойду-ка выпью свежей крови.
Кстати да грамотно поставленый кондиционер намного лучше всяких белых и черных гугл оптимизаций.
Привет! Спасибо за сайт, нашел много интересного, о чем непременно упомяну в своем блоге "Обзор 100 блогов за 100 дней"
С уважением, А.Стоблогов
Ладно, убедил, пойду делать дорвеи на новой технологии, чтобы трафик нагнать на какой-нибудь свой старый проект. :) Технология такая же "белая", как сотовые в [здесь была реклама]. ;)
Кстати, а почему нет новости про Adobe AIR update Beta 1 for Flash CS3? http://labs.adobe.com/wiki/index.php/AIR:Flash_CS3_Professional_Update Привык, что все новинки есть на Рипере, чуть не пропустил такую важную штуку...
Dendroid, прости - хотел завтра написать... блин, новостей столько, что одна хорошая выдавливает вниз другую, о это неумолимое течение времени, остановите новостную ленту я хочу насладиться..
Ладно, ты победил: Делаем десктопные приложения прямо из Flash CS3: Adobe AIR update Beta 1 для Flash CS3. Впредь обещаю быть хорошим.
А Стоблогов не обманул -- написал :)
>> Кстати да грамотно поставленый кондиционер...
Ммм... закончились кондиционеры...
нет, просто не думал тогда об этом ) в принципе предположим человек зашел через поисковик на http://www.partysalonagency.com/promotion/ надо детектить флеш, потом делать редирект http://www.partysalonagency.com/?promotion или #/promotion/ и открывать нужный раздел, короче прикрутить swfaddress - http://www.asual.com/swfaddress/
оригинально - Наблюдать процесс отладки %))
Miguel™ - скоро добавлю еще одну фичу, чтобы наблюдать было интереснее :-)