内容协商
- 客户端驱动的协商(缺点:通信量增加)
缺点:每个页面都需要两次请求,第一次获取列表,第二次获取选择的副本。
原理:服务器位客户端提供了两个选择:1.回送回html文档,里面包含到各个版本的链接和每个版本的描述信息。(这种情况下浏览器会显示一个带有链接的页面)
2.发送回http1.1响应时,使用300 multiple choices
响应代码。(这种情况下浏览器会弹出对话窗口,让用户选择)
- 服务端驱动的协商
1.检查内容协商首部集,服务器查看客户端发送的accept首部集,用匹配到的首部集进行响应。
2.根据其他非内容协商首部进行变通。
内容协商首部集可以减少往返通信的时延
是由客户端发送给服务器的,用于和服务器交换偏好信息,以便服务器可以从不同版本中选择出最符合客户端偏好的那个来提供服务
Accept
、Accept-Language
、Accept-Charset
、Accept-Encoding
内容协商首部质量值
相当于优先级,用q来表示,值范围0.0-1.0从低到高。表现形式
Accept-Language:en;q=0.5
,fr;q=0.0,nl
透明协商
透明协商试图从服务器上去除服务器驱动协商所需的负载,并用中间来代表客户端以使与客户端的报文交换最小化。
服务器在响应中发送vary首部,用来告知中间节点需要使用哪些请求首部进行内容协商。
服务器可用vary首部来选择文档或产生定制内容。
当有一个新的请求时,缓存会根据内容协商首部集来寻找最佳匹配。
但是在文档提供给客户端之前需要检查vary首部,如果有vary首部,那么新请求中那些首部的值必须与旧的已缓存请求里相应的首部相同。
如果vary首部保存了很多,缓存必须为每个备选项保存其文档版本。在执行缓存查找时,会先比较内容协商首部集,再比较请求的变体和缓存的变体。如果不匹配日,从原始服务器获取文档。
转码(uri转码前提,服务器存在客户端请求的内容。如果有不满足的,服务器会给出错误响应。服务器换一种转换方式提供给客户端)
- 格式转换
将数据从一种格式转换成另一种格式。例如:html转wxl,高分辨率转低分辨率。
- 信息综合
从文档中提取关键信息片段。例如,使用标题生成大纲。
- 内容注入
增加文档内容。例如:自动广告生成器和用户追踪系统。
网友评论