Ajax 为什么像twitter、gawker这样的网站会使用#!而不是简单的URL?

Ajax 为什么像twitter、gawker这样的网站会使用#!而不是简单的URL?,ajax,url,twitter,web-crawler,Ajax,Url,Twitter,Web Crawler,可能重复: Twitter的个人资料现在有以下形式的URL: http://twitter.com/#!/username 而不是更简单的结构: http://twitter.com/username 什么是#做什么?使用#有什么好处?我读到它与谷歌的网络爬虫有关,但我不明白它到底是如何工作的。在URL中,哈希标记(#)后的内容不会发送到服务器,而是在页面上的JavaScript可见。因此,使用#基本上允许页面”http://twitter.com/“来处理它(例如,通过打开后台连接来加载

可能重复:

Twitter的个人资料现在有以下形式的URL:

http://twitter.com/#!/username
而不是更简单的结构:

http://twitter.com/username

什么是
#做什么?使用
#有什么好处?我读到它与谷歌的网络爬虫有关,但我不明白它到底是如何工作的。

在URL中,哈希标记(#)后的内容不会发送到服务器,而是在页面上的JavaScript可见。因此,使用#基本上允许页面”http://twitter.com/“来处理它(例如,通过打开后台连接来加载其他数据)。这也意味着不会从一个页面更改到另一个页面的内容(想想页面的总体布局)可以立即缓存和提供(因为有效的URL仍然是“http://twitter.com/),而将其放在URL的路径中(不带哈希)将需要一个完整的单独提取来获取该布局。

这有两个部分:

为什么使用片段标识符而不是实际页面? 因为他们是。他们不链接到新页面,而是链接到不存在的或动态生成的当前页面,然后使用JavaScript更改内容

为什么要用
启动片段标识符

因为谷歌会这样做,所以你可以为他们提供一个特殊的替代版本。这允许搜索引擎为内容编制索引。

它没有过度使用Ajax。对于用户来说,页面加载速度似乎更快,因为布局将立即呈现(假设它仍然被缓存)。缓存与此无关-数据仍然在页面上。如果重新加载页面,那么(易于压缩的)标记将再次发送,图像、css、js等将从缓存中加载。它过度使用Ajax(注意这是主观的)。这有好处,但也有代价(请注意,这不是主观的)。愚蠢是我的答案-+1的文章,给出了一个很好的解释-当它提高了页面加载速度时,我会说这很愚蠢。以130英里/小时的速度开车可以缩短到达某处所需的时间。这并不能阻止它的愚蠢。谢谢罗伯·艾伦(@akrabat)让我注意到它。页面速度相当重要。与其牺牲网站速度,不如提供更好的网站稳定性方法,如自动化JavaScript测试、严格的回归测试和监控、使用一点永不改变的JavaScript,如果无法访问外部JavaScript,则会导致链接和页面恢复到旧的行为,等等。