草庐IT

Ajax 魔法 : How is Kotaku achieving Ajax *and* Google accessability?

coder 2024-02-28 原文

Kotaku 推出了一种没有 hashbang 的新设计。他们的站点显然仍然使用 ajax 请求,但仍然可以通过 Google 以某种方式找到它,并且内容显示在页面源中。他们是怎么做到的呢?他们的文本似乎包含在脚本 type=text/javascript 中,但我不明白这有什么影响,或者他们为什么要这样做。 (当然,第一个页面请求可能只是触发一个静态的,服务器端构造的响应。但是查看其他文章,它确实通过ajax请求加载json。没有页面刷新)

例如,看看这个网站:

http://kotaku.com/5800326/read-some-of-new-tomb-raider-game-right-now

没有哈希,一个格式非常好的 URL,它出现在谷歌中。我已经阅读了 Google Ajax 指南,据我了解,如果您使用 #!在您的网址内。

为了您的方便,我制作了一个屏幕截图,显示了文本在 Chrome 调试器中的样子:(“ganjaAjaxContent”是什么意思?)

如果你搜索这篇文章,它是谷歌中的第一个匹配项: Google search for Kotaku article

能够执行 ajax 而不必担心 Google 搜索会很棒。

最佳答案

Kotaku 和其他 Gawker 网站正在为 SEO 做很多事情:

  • 为其所有内容提交 XML 站点地图
  • 正确使用 Google 和 Facebook 的标题和描述标签

    • <title>Read Some of New Tomb Raider Game Right Now</title><br/> <meta name="fragment" content="!"><br/> <meta name="title" content="Read Some of New Tomb Raider Game Right Now" /><br/> <meta name="description" content="Upcoming Tomb Raider reboot doesn&#039;t have a release date yet, but website Siliconera apparently has the game&#039;s script and published what&#039;s reportedly an excerpt from it. Check it out. [Siliconera]" /><br/> <meta property="og:title" content="Read Some of New Tomb Raider Game Right Now" /><br/> <meta property="og:description" content="Upcoming Tomb Raider reboot doesn't have a release date yet, but website Siliconera apparently has the game's script and published what's reportedly an excerpt from it." />
  • 在关闭 Javascript 时显示 HTML 帖子内容(检查 <div class="post-body quick-post"></div> 元素)

所以你是对的,Google 的第一次访问加载了语义的、可访问的服务器端构建的页面。虽然 Google 可以抓取 hashbang 页面,但它不需要这样做,因为所有页面都通过 sitemap.xml 编入索引

希望这能回答您所有的问题。

附注说了这么多,hashbangs 仍然对网络不利

关于 Ajax 魔法 : How is Kotaku achieving Ajax *and* Google accessability?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5954322/

有关Ajax 魔法 : How is Kotaku achieving Ajax *and* Google accessability?的更多相关文章

  1. ruby-on-rails - rails : save file from URL and save it to Amazon S3 - 2

    从给定URL下载文件并立即将其上传到AmazonS3的更直接的方法是什么(+将有关文件的一些信息保存到数据库中,例如名称、大小等)?现在,我既不使用Paperclip,也不使用Carrierwave。谢谢 最佳答案 简单明了:require'open-uri'require's3'amazon=S3::Service.new(access_key_id:'KEY',secret_access_key:'KEY')bucket=amazon.buckets.find('image_storage')url='http://www.ex

  2. jquery - 我的 jquery AJAX POST 请求无需发送 Authenticity Token (Rails) - 2

    rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送

  3. ruby-on-rails - 如何在 Ruby on Rails 中实现由 JSF 2.0 (Primefaces) 驱动的 UI 魔法 - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。问题1)我想知道ruby​​onrails是否有功能类似于primefaces的gem。我问的原因是如果您使用primefaces(http://www.primefaces.org/showcase-labs/ui/home.jsf),开发人员无需担心javascript或jquery的东西。据我所知,JSF是一个规范,基于规范的各种可用实现,prim

  4. jquery - 如何将 AJAX 变量从 jQuery 传递到他们的 Controller ? - 2

    我有一个电子邮件表格。但是我正在制作一个测试电子邮件表单,用户可以在其中添加一个唯一的电子邮件,并让电子邮件测试将其发送到该特定电子邮件。为了简单起见,我决定让测试电子邮件通过ajax执行,并将整个内容粘贴到另一个电子邮件表单中。我不知道如何将变量从我的HAML发送到我的Controllernew.html.haml-form_tagadmin_email_blast_pathdoSubject%br=text_field_tag'subject',:class=>"mass_email_subject"%brBody%br=text_area_tag'message','',:nam

  5. ruby-on-rails - 使用 javascript 更改数据方法不会更改 ajax 调用用户的什么方法? - 2

    我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的

  6. ruby - Chef : Read variable from file and use it in one converge - 2

    我有以下代码,它下载一个文件,然后将文件的内容读入一个变量。使用该变量,它执行一个命令。这个配方不会收敛,因为/root/foo在编译阶段不存在。我可以通过多个聚合和一个来解决这个问题ifFile.exist但我想用一个收敛来完成它。关于如何做到这一点有什么想法吗?execute'download_joiner'docommand"awss3cps3://bucket/foo/root/foo"not_if{::File.exist?('/root/foo')}endpassword=::File.read('/root/foo').chompexecute'join_domain'd

  7. ruby-on-rails - rspec 测试 has_many :through and after_save - 2

    我有一个(我认为)相对简单的has_many:through与连接表的关系:classUser:user_following_thing_relationshipsendclassThing:user_following_thing_relationships,:source=>:userendclassUserFollowingThingRelationship还有这些rspec测试(我知道这些不一定是好的测试,这些只是为了说明正在发生的事情):describeThingdobefore(:each)do@user=User.create!(:name=>"Fred")@thing=

  8. ruby - :variable and @variable 之间的差异 - 2

    作为RubyonRails新手,我明白“@”和“:”引用有不同的含义。我看到了thispost在SO中,其中描述了一些差异。@表示实例变量(例如@my_selection):表示别名(例如:my_selection)我遇到了一个情况,我有一个标准的MVC页面,类似于我的网络应用程序中的所有其他表单/页面。html.erb片段route.rb片段resources:my_selections当我尝试访问此页面时,出现此错误:NoMethodErrorinselections#createShowingC:/somedir/myapp/app/views/my_selections/ind

  9. ruby-on-rails - Assets 管道损坏 : Not compiling on the fly css and js files - 2

    我开始了一个新的Rails3.2.5项目,Assets管道不再工作了。CSS和Javascript文件不再编译。这是尝试生成Assets时日志的输出:StartedGET"/assets/application.css?body=1"for127.0.0.1at2012-06-1623:59:11-0700Servedasset/application.css-200OK(0ms)[2012-06-1623:59:11]ERRORNoMethodError:undefinedmethod`each'fornil:NilClass/Users/greg/.rbenv/versions/1

  10. ruby - Emacs, ruby : convert do end block to curly braces and vice versa - 2

    我经常发现自己像这样转换代码:beforedo:somethingend到before{:something}有没有办法在emacs中自动执行此任务?我使用ruby​​-mode和rinary,但它们在这里用处不大。 最佳答案 ruby-mode在Emacs24.3和更新版本中有命令ruby-toggle-block。默认绑定(bind)是C-c{。 关于ruby-Emacs,ruby:convertdoendblocktocurlybracesandviceversa,我们在Stack

随机推荐