代码之家  ›  专栏  ›  技术社区  ›  nemesisdesign

Ajax爬行:旧方式与新方式(#!)

  •  12
  • nemesisdesign  · 技术社区  · 15 年前

    老路

    当我在要求内容由搜索引擎索引的项目中异步加载页面时,我使用了一种非常简单的技术,即

    <a href="page.html" id="example">Page</a>
    <script type="text/javascript">
        $('#example').click(function(){
            $.ajax({
                url: 'ajax/page.html',
                success: function(data){
                    $('#content').html(data);
                }
            })
       });
    </script>
    

    编辑:我曾经实现haschange事件来支持javascript用户的书签。

    新方法

    最近,Google提出了ajax爬行的概念,请阅读以下内容:

    http://code.google.com/web/ajaxcrawling/

    http://www.asual.com/jquery/address/samples/crawling/

    基本上他们建议把“website.com/#page”改成“website.com/#!页面”并添加包含该片段的页面,如“website.com/?_转义的碎片

    使用这种新方法有什么好处?

    对我来说,新的方法似乎给我的工作带来了更多的工作和复杂性。在我之前,我设计了一个没有Ajax的网站,然后在最后阶段添加了Ajax和Haschange事件(支持后退按钮和书签)。

    从搜索引擎优化的角度来看,使用这种新方法有什么好处?

    4 回复  |  直到 15 年前
        1
  •  5
  •   Amnon    15 年前

    其目的是使AJAX应用程序可爬行。根据HTTP规范,url引用同一文档,而不考虑片段标识符(散列标记后面的部分)。因此,搜索引擎会忽略片段标识符:如果您有指向 www.example.com/page#content ,爬虫程序只需请求 www.example.com/page .

    在新方案中,当您使用 #! 爬虫程序知道链接引用其他内容。爬虫程序将URL转换为另一个(丑陋的)URL并从web服务器请求它。web服务器应该用表示AJAX内容的静态HTML来响应。

    编辑 关于最初的问题:如果您已经有到静态页面的常规链接,那么这个方案对您没有帮助。

        2
  •  3
  •   lonesomeday    15 年前

    这个优势并不真正适用于你,因为你正在使用渐进式增强。新的Google特性是针对完全用Javascript编写的应用程序,因此爬虫程序无法读取这些应用程序。我觉得你不需要在这里做任何事。

        3
  •  1
  •   Harmen    15 年前

    我认为,背后的想法是Javascript用户也可以为页面添加书签。如果你看一下你的“旧”方法,它只是替换页面上的内容;没有办法复制URL来向其他人显示当前状态的页面。

    所以,如果你已经实现了 #! 方法,必须通过Javascript确保这些url指向正确的页面。

        4
  •  1
  •   tobiasmay    15 年前

    我认为谷歌更容易确定你没有处理重复的内容。我在url中包含了类似foo/#/bar.html的散列,并将其传递给permalink结构,但我不太确定google是否喜欢。

    不过,这个问题很有趣。+1个