在https://www.google.co.in/#q=better+flight+search中的“#”后查询

时间:2014-01-28 20:20:04

标签: url google-search uri-fragment

网址遵循以下方案

scheme://domain:port/path?query_string#fragment_id

但搜索字符串

  

更好的航班搜索

产生以下网址

https://www.google.co.in/#q=better+flight+search

根据url方案#后跟片段。如果我错了,请纠正我,但片段不会发送到服务器,那么google如何显示搜索结果。

1 个答案:

答案 0 :(得分:3)

如您所知,URL的片段部分不会在HTTP请求中发送到服务器。相反,浏览器在本地使用它来标记文档中的位置。一些客户端框架利用了这一事实,并将片段用作辅助查询字符串。

因此,举例来说,在Google的示例中,在Google页面上进行搜索会导致页面导航到#q=better+flight+search这样的片段。浏览器会看到更改并通知页面的javascript URL已更改。由于URL减去片段是相同的,因此浏览器不会向服务器执行请求。在这种情况下,页面的javascript会看到片段更改并使用它来执行Ajax查询以获取搜索结果。这样做可以让Google在不加载页面的情况下为您提供搜索结果,这对服务器和客户端来说都是一个巨大的胜利(服务器,因为它不必处理服务另一个页面的开销;客户端因为加载时间大大减少)。

对于相关的#!看到this question