3

私はajaxの重いアプリケーションをより検索エンジンに優しいものにすることについて読んでいます: https ://developers.google.com/webmasters/ajax-crawling/docs/getting-started

私が最近提供したソリューションの1つは、クロスドメインのJavaScriptウィジェットに大きく依存しています。このソリューションを統合するWebサイトでは、Webサイトに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>

このリクエストは、ウィジェットが使用する関連するアプリケーションURLとともにjQueryラッパーをdomに追加します。このJavaScriptのソースは、関連するコンテンツを出力するasp.netmvcコンテンツの結果であることに注意してください。

[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にどのように示しますか?

やや有望と思われるもう1つのオプションは、ハッシュフラグメントなしでページを処理する方法に関するセクションでした。これは、javascriptウィジェットを利用するメタタグを追加することで実現されます。

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

ただし、現在の問題は、これがクロスドメインリクエストであり、どこにもリードしないという事実にあります。

4

1 に答える 1

1

これはトリッキーなものです。GoogleがJavaScriptをクロールするという証拠があります(それ自体はブラウザと同じようには実行されませんが、少なくともFlashやWordなどのドキュメントと同じようにJavaScriptでURLを検索します。 Googleが'http://hostname/Application/js'JavaScriptを見つけてそれに従うように設計し、返されたJavaScriptからURLを解析する場合は、何もする必要がない可能性があります。

より具体的な解決策が必要な場合は、次のようにコードを変更してください。

<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/リンクをクロールするために停止します。サーバー側では、これらのURLで、JavaScriptの場合と同じリンクのリストを生成できますが、簡単に消化できるHTMLで生成されます。

Googlebotをさらに幸せにする可能性のある追加のオプションは、 WebPageElementのようなSchema.orgオブジェクトを使用することです。

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

...次に、ターゲットページにSchema.org宣言も含めるようにします。以前のフォームの1つよりもこれから実際に利益を得ることができるかどうかはわかりませんが、メタデータ将来への愛のメモです。

于 2012-06-14T17:57:44.003 に答える