2012-06-14 2 views
3

Я читал о том, Ajax тяжелых приложений более дружественные поисковых системе: https://developers.google.com/webmasters/ajax-crawling/docs/getting-startedСоздания просканировать междоменного Javascript виджеты

Одно из решений я доставленные в последнее время в значительной мере опирается на Междоменный яваскрипте виджеты. Веб-сайт, интегрирующий это решение, будет включать в себя часть javascript на своем веб-сайте. Например:

<script type="text/javascript"> 
    var _lw = _lw || {}; 
    _lw._setAccount = ' 00000000-0000-0000-0000-000000000000' ; 
    _lw._widgetType = '_widgetName'; 
    _lw._options = {}; 

    (function() { 
    var scriptsrc = document.createElement('script'); 
    scriptsrc.type = 'text/javascript'; 
    scriptsrc.async = true; 
    scriptsrc.src = 'http://hostname/Application/js'; 

    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(scriptsrc, s); 
    })(); 
</script>] 

<div id="widget-container"></div> 

Этот запрос добавляет к йоту JQuery обертки вместе с соответствующими приложением URL, что виджет будет использовать. Обратите внимание, что источник этой части JavaScript это просто asp.net MVC содержания результата, который выводит соответствующее содержание:

[HttpGet] 
[ActionName("js")] 
public ContentResult RenderJavascript() 
{ 
     // java script urls & jquery wrapper are output 
} 

Теперь, необходимые URL, доступны, обертка JQuery, который был только добавляются пинками в и пожарах выдать запрос серверу с информацией об учетной записи, типом виджетов и любыми соответствующими параметрами. ASP.net MVC просто действует как генератор контента и возвращает результат JSONP, где сгенерированное содержимое добавляется в контейнер содержимого сайтов.

function loadWidget() { 
    var jsonpUrl = _opts._widgetUrl + _lw._setAccount; 
    jQuery.getJSON(jsonpUrl, _lw._options, function (data) { 
     jQuery('#widget-container').html(data.html); 
    }); 
} 

Чем больше я читал о том, как сделать этот процесс более дружественным к поисковой системе, я не могу с чего начать. Генерирование требуемого моментального снимка HTML достаточно просто, но как я могу указать google, что ссылку следует обходить?

Другой вариант, который казался несколько перспективным, - это раздел о том, как обрабатывать страницы без фрагментов хэша. Это было бы достигнуто добавлением метатега, который использует виджеты javascript.

<meta name="fragment" content="!"> 

Однако проблема сейчас заключается в том, что это запрос кросс домен и снова обыкновение»вести в любом месте.

+0

Если ваши виджеты не могут изменить местоположение хэша, я не думаю, что это возможно. См. Https://developers.google.com/webmasters/ajax-crawling/docs/getting-started. –

ответ

1

Это сложный вопрос. Есть evidence, что Google выполняет сканирование JavaScript (он не выполняет его сам по себе так же, как это делает ваш браузер, но он, по крайней мере, будет искать URL-адреса в JavaScript, как и в Flash, Word и т. Д.). есть шанс, что вам не нужно ничего делать, если Google видит 'http://hostname/Application/js' в вашем JavaScript и соизволит следовать за ним, а затем анализировать URL-адреса из возвращаемого JavaScript.

Если вы хотите более конкретное решение, возможно, измените свой код как это:

<div id="widget-container"><iframe src="http://hostname/Application/iframe"></div> 

ИЛИ:

<div id="widget-container"><a href="http://hostname/Application/links"></div> 

Когда JavaScript вашего виджета выполняется браузером, вы можете заменить содержимое #widget-container тем, что вы обычно замените его (вы также можете добавить атрибут style="visibility:invisible;", но я подозреваю, что Google наказывает «скрытое» содержимое по возможности по понятным причинам), но когда робот Googlebot остановится, он сканирует iframe/link. На стороне сервера вы можете иметь эти URL-адреса для создания того же списка ссылок, что и в JavaScript, но в легко перевариваемом HTML.

Дополнительный вариант, который может сделать Googlebot еще более счастливым, использует объект Schema.org, например WebPageElement, например.:

<div id="widget-container" itemscope itemtype="http://schema.org/SiteNavigationElement"> 
    <link itemprop="url" href="http://hostname/Application/links"> 
</div> 

... а затем целевая страница также содержит декларации Schema.org. Я не уверен, что вы получите реальную выгоду от этого по одной из предыдущих форм, но metadata is a love note to the future.

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