ajax、SEO、誰が魚と熊の掌を兼ねることができないと言います

2571 ワード

ユーザー体験が浸透するにつれて、ますます多くのシステムが単一ページ構造(SPA)を採用している.言うまでもなく、単一ページシステムの体験がよく、消費流量が少なく、グローバルリフレッシュを必要としない.しかし、検索エンジンにはあまり情報をつかむことができず、SEOには友好的ではありません.例えば、
検索エンジンは
www.demo.com/index.htmlというページの内容は、
取得できませんでした
www..demo.com/index.html#user
www..demo.com/index.html#detail
などのページの内容は、検索エンジンが#の後ろの内容を管理しないため、データが失われ、サイトのランキングに不利になります.
ではurlアドレスを変更しながらajaxのページ取得を両立させる方法はありますか?
html 5の新しいAPI pushStateを利用すると、この問題をうまく解決できます.
コードを見てみましょう



    
    


<ul id="nav">
    <li><a href="#user">user</a></li>
    <li><a href="#detail">detail</a></li>
</ul>

<div id="container">

</div>


<script>
    var ul = document.querySelector('#nav'),
            container = document.querySelector('#container');</code></pre> 
   <pre><code class="language-html">    //        
    var setContainer = function (url) {
        //ajax    template
        container.innerHTML = 'ajax     ' + url;

    };
    ul.addEventListener('click', function (e) {
        var target = e.target;
        if (target.nodeName !== 'A') {
            return;
        }
        var url = target.hash.replace('#', ''); 
        history.pushState(url, null, url); //  A       ,     url
        setContainer(url);
        e.preventDefault();
        e.stopPropagation();
    });</code></pre> 
   <pre><code class="language-html">    //       /      
    window.addEventListener('popstate', function (e) {
        setContainer(e.state);
    });

</script>
</code></pre> 
  </div> 
  <div>
      pushState  ,                  url,      ,   ajax    ,      ,  ,          url  ,               。 
  </div> 
  <div>
         #  ,     url      ,  ,                           
  </div> 
  <div> 
   <br/> 
  </div> 
  <div> 
   <pre><code>


<ul id="nav">
    <li><a href="#user">user</a></li>
    <li><a href="#detail">detail</a></li>
</ul>

<div id="container">

</div>

</code></pre> 
   <br/> 
   <br/> 
  </div> 
  <div> 
   <span/> 
  </div> 
 </div> 
</div>
                            </div>
                        </div>