【问题标题】:'?' versus '#!' in URLs [duplicate]“?”相对 '#!'在 URL [重复]
【发布时间】:2011-06-23 15:20:04
【问题描述】:

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

为什么越来越多的网站(例如 twitter 或 gawker)使用“#!”代替 '?'将参数与 URL 的其余部分分开?有什么优势?

【问题讨论】:

  • 所以 this 是我的问题的赞成票的来源!我不会说这是我的问题的重复,但是......虽然我猜这确实只关注#! 的用途。

标签: http url


【解决方案1】:

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

【讨论】:

  • 我看到 Facebook 首先使用他们的照片库查看器。
【解决方案2】:

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

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

比较两个网址,比如说

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

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

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

使用这种方案,这意味着如果 example.com 是一个受欢迎的服务,他们将不得不向该服务的每个用户发送完整的响应,并且很可能他们的任何结果都不会被缓存在任何地方。

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

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

具体形式“#!”是 AJAX 样式 Web 应用程序的新兴标准,因此它们的 URL 可以被搜索引擎索引,或被 Web 分析软件分析。实际的 URL 规范只要求使用“#”字符,它也可以用于其他目的(例如文档中的命名锚点)。

【讨论】:

    【解决方案3】:

    在构建大量 ajax 的网站时,使用井号非常方便。在不重新加载页面的情况下显示新内容的站点通常仍会更新 url,以便可以链接到特定内容。您只能在不重新加载页面的情况下更改 '#' 之后的 url 部分(以防止网站假装它们生活在与它们不同的域中)。

    【讨论】:

      猜你喜欢
      • 2018-11-06
      • 2020-07-20
      • 2013-04-29
      • 2011-01-11
      • 2016-12-15
      • 2018-08-25
      • 2021-10-11
      • 2012-08-05
      • 1970-01-01
      相关资源
      最近更新 更多