Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么搜索引擎可以';直接索引Ajax站点?_Java_Ajax_Gwt_Search_Search Engine - Fatal编程技术网

Java 为什么搜索引擎可以';直接索引Ajax站点?

Java 为什么搜索引擎可以';直接索引Ajax站点?,java,ajax,gwt,search,search-engine,Java,Ajax,Gwt,Search,Search Engine,作为一名(GWT开发人员),我理解Ajax站点动态呈现页面,例如,我创建的站点是单页面,包含用于呈现“主页”、“关于我们”、“产品”等“页面”的选项卡 但是,这些页面通常与散列(#)合并,如果我访问它们,就会说,http://example.com#HomePage或#Products它将“最终”呈现页面和内容 现在,如果我将我的产品页面站点放在可爬行的静态博客站点上,例如:http://example.com#Products如果我点击这个网站,我的网站最终会在一些ajax调用之后呈现产品 但

作为一名(GWT开发人员),我理解Ajax站点动态呈现页面,例如,我创建的站点是单页面,包含用于呈现“主页”、“关于我们”、“产品”等“页面”的选项卡

但是,这些页面通常与散列(
#
)合并,如果我访问它们,就会说,
http://example.com#HomePage
#Products
它将“最终”呈现页面和内容

现在,如果我将我的产品页面站点放在可爬行的静态博客站点上,例如:
http://example.com#Products
如果我点击这个网站,我的网站最终会在一些ajax调用之后呈现产品

但是,如果我从浏览器中检查站点的“页面源代码”,页面仍然是相同的html“空自ajax内容”;这就是为什么ajax站点不能被索引的原因吗?搜索引擎不会将他们抓取的URL放在HTML单元中,这样他们就可以呈现页面,而不仅仅是获取静态页面


无论如何,我看到了解决这个问题的实现,使用外部“爬虫”服务作为ajax站点的一部分,但是没有解决方案不需要设置这样的外部服务/服务器吗

您应该知道的第一件事是爬虫程序不会在页面上执行javascript,但有一种方法可以使页面可爬虫(向爬虫程序显示您的应用程序使用AJAX)

示例(谷歌爬虫):

您应该首先通过向应用程序AJAX链接添加特殊标记来向爬虫程序表明您的站点支持AJAX爬虫方案。之后,爬虫将转换该URL,并使用转换后的URL调用您的服务器。服务器应该返回HTML快照(生成的HTML),它表示用户在浏览器中使用AJAX加载页面时创建的HTML内容。最后,您可以使用它来测试google crawler在调用AJAX链接时会收到什么。可以找到深入的解释

我不使用GWT,但也许您可以使用一些特定的解决方案

但是,如果我从浏览器中检查站点的“页面源代码”,页面仍然是相同的html“空自ajax内容”;这就是为什么ajax站点不能被索引的原因吗?搜索引擎不会将他们抓取的URL放在HTML单元中,这样他们就可以呈现页面,而不仅仅是获取静态页面

是的,依赖Ajax拉入内容的站点依赖JavaScript拉入内容,搜索引擎索引机器人(通常)不会执行JavaScript,因为:

  • 这样做需要更多的CPU/RAM
  • 很难确定哪些交互会引入新内容,哪些交互会做其他事情
无论如何,我看到了解决这个问题的实现,使用外部“爬虫”服务作为ajax站点的一部分,但是没有解决方案不需要设置这样的外部服务/服务器吗

首先不要依赖JavaScript。建立一个与常规链接一起工作的网站。如果你想的话,在上面放一层JavaScript。用于在拉入新内容时使用真实URL更新地址栏


简言之,遵循和的原则,谷歌在2009年发布了一项提案,解释了如何创建AJAX网站,该网站可以被他们的搜索蜘蛛索引,但我不知道这是否实现过:他们确实实现了。他们现在正在推动服务器呈现的内容和
pushState()
(我们还没有GWT,但GWT是为应用程序而不是网站设计的)你好,佩贾拉登科维奇。请注意,stackoverflow上不鼓励仅链接的答案,因为它们很容易成为链接腐朽的牺牲品。请在发表声明时链接到您的来源,但请始终至少写一份链接内容的摘要。请注意,第一个链接(到谷歌)中给出的建议已被删除。@Philipp感谢您的建议。“下次我会更加注意的。”佩德贾拉登科维奇说,你仍然可以编辑你的答案。你的链接有有用的内容,当你编辑你的答案并用你自己的话描述他们的建议时,我会考虑赞成你的答案。