1

URL 遵循以下方案

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

但搜索字符串

更好的航班搜索

导致以下网址

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

根据 url 方案#,后面是片段。如果我错了,请纠正我,但片段没有发送到服务器,那么谷歌如何显示搜索结果。

4

1 回答 1

3

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

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

对于相关的#!看到这个问题

于 2014-01-28T20:22:16.220 回答