'?'与 '#!'在URL中

时间:2011-02-08 18:31:58

标签: http url

  

可能重复:
  What's the shebang (#!) in Facebook and new Twitter URLs for?

为什么有越来越多的网站(例如twitter或gawker)使用'#!'代替 '?'从URL的其余部分分离参数?有什么好处?

3 个答案:

答案 0 :(得分:6)

正在成为使AJAX Web应用程序可抓取的标准方法proposed by Google

答案 1 :(得分:4)

'?'用于将URL的路径组件与查询组件分开。当浏览器请求这样的资源时,两个组件都被发送到Web服务器。服务器可以查看查询并确定要发回的响应。

'#'的用法不同 - 它将'fragment'或'hash'组件与url的其余部分分开。片段组件永远不会发送到Web服务器,但 可用于页面中运行的任何脚本。

比较两个网址,比如说

http://www.example.com/service/?my+query

http://www.example.com/service/#!my+query

在第一种情况下,整个url被发送到服务器,并返回响应。从浏览器一直到服务器的所有缓存都将看到查询字符串,并且知道响应仅与该查询相关。他们可能会缓存该查询的响应,但更可能根本不会缓存响应。

通过这种方案,这意味着如果exam​​ple.com是一种流行的服务,他们将不得不向服务的每个用户发送一个完整的响应,并且他们的结果很可能不会被缓存到任何地方。

在第二种情况下,仅使用路径组件http://www.example.com/service/,服务器将(可能)将同一文档返回给请求该URL的每个用户。上游缓存将能够缓存该文档,并将其提供给新用户,而无需为每个请求返回原始Web服务器。

使用此方案,可能会在该文档上运行一些查看该片段的JavaScript,然后从该服务请求任何其他搜索结果。这些可能比整个页面小得多,减少了服务器上的负载,或者它们可以是可缓存的结果,可供多个用户使用。

特定形式'#!'是AJAX风格的Web应用程序的新兴标准,因此它们的URL可以被搜索引擎索引,或者通过Web分析软件进行分析。实际的URL规范只强制使用'#'字符,它也可以用于其他目的(比如文档中的命名锚点)。

答案 2 :(得分:0)

在构建ajax-heavy网站时,使用井号是很方便的。在不重新加载页面的情况下显示新内容的网站通常仍会更新网址,以便可以链接到特定内容。您只能在不重新加载页面的情况下更改“#”后的网址部分(以防止网站假装他们居住在与他们不同的域中)。