'?' 用于将 URL 的路径部分与查询部分分开。当浏览器请求此类资源时,这两个组件都会发送到 Web 服务器。服务器可以查看查询并确定发回什么响应。
“#”的用法不同——它将“片段”或“散列”组件与 URL 的其余部分分开。片段组件永远不会发送到 Web 服务器,但它可供页面中运行的任何脚本使用。
比较两个 URL,例如
http://www.example.com/service/?my+query
Run Code Online (Sandbox Code Playgroud)
和
http://www.example.com/service/#!my+query
Run Code Online (Sandbox Code Playgroud)
在第一种情况下,整个 url 被发送到服务器,并返回响应。从浏览器一直到服务器的任何缓存都会看到查询字符串,并知道响应仅与该查询相关。他们可能会缓存该查询的响应,但更有可能根本不会缓存响应。
使用此方案,这意味着如果 example.com 是一项流行的服务,他们将必须向该服务的每个用户发送完整的响应,并且很可能他们的任何结果都不会缓存在任何地方。
在第二种情况下,仅http://www.example.com/service/使用路径组件,并且服务器(可能)将相同的文档返回给请求该 URL 的每个用户。上游缓存将能够缓存该文档,并将其提供给新用户,而无需针对每个请求返回原始 Web 服务器。
使用此方案,可能会在该文档上运行一些 JavaScript,它会查看该片段,然后从服务请求任何其他搜索结果。它们可能比整个页面小得多,从而减少服务器上的负载,或者它们可以是可缓存的结果,可供多个用户使用。
特定形式“#!”是 AJAX 式 Web 应用程序的新兴标准,因此它们的 URL 可以由搜索引擎索引,或由 Web 分析软件进行分析。实际的 URL 规范仅强制要求使用“#”字符,它也可以用于其他目的(例如文档中的命名锚点)。
| 归档时间: |
|
| 查看次数: |
319 次 |
| 最近记录: |