Cookie 技术
HTTP 协议是一个无状态协议,服务器不记录客户的历史行为,然而一个 Web 站点通常希望能够识别用户,可能是因为服务器希望限制用户的访问,或者因为它希望把内容与用户身份联系起来。为此,HTTP 使用了 Cookie技术。
Cookie技术有 4 个组件:
- HTTP 响应消息的 cookie 首部行
- HTTP 请求消息的 cookie 首部行
- 保存在客户端主机上的 cookie 文件,由浏览器管理
- 服务器端的后台数据库
假设 Susan 首次用 Edge 浏览器与 Amazon.com 联系,并假定她之前使用 Edge 访问过 eBay 站点。当请求报文首次到达 Amazon Web 服务器时,该 Web 站点生成一个唯一识别码,并以此为索引在它后面的数据库中产生一个表项,接下来 Amazon Web 服务器用一个包含 Set-cookie:
的首部行的 HTTP 响应报文对 Susan 的浏览器进行响应,其中 Set-cookie:
首部行中含有该识别码。
Set-cookie: 1678
当 Susan 的浏览器收到该 HTTP 响应报文时,会看到 Set-cookie:
首部行,浏览器会在它管理的特定 cookie 文件中添加一行,该行包含服务器的主机名和 cookie 识别码。当 Susan 继续浏览 Amazon 网站时,每请求一个 Web 页面,其浏览器就会从它的 cookie 文件中获取她对这个网站的识别码,并放在 HTTP 请求报文中包括识别码的 cookie 首部行中。
Cookie: 1678
在这种方式下,Amazon 服务器可以跟踪 Susan 在 Amazon 站点的活动,尽管服务器不必知道 Susan 的名字,但它确切的知道用户 1678 按什么顺序、在什么时间访问了哪些页面,便可以提供一些用户特定的服务。
Cookie 能够用于:身份认真、购物车、推荐、Web Email 等,但是存在隐私问题。
Web 缓存技术
Web 缓存器(Web cache)也叫代理服务器(proxy server),它是能够代表初始 Web 服务器来满足 HTTP 请求的网络实体,可以在不访问服务器的前提下满足客户端的 HTTP 请求,Web 缓存器通常由 ISP(Internet 服务提供商) 购买并安装。
如上图所示,可以配置用户的浏览器,使得用户的所有 HTTP 请求首先指向 Web 缓存器:
- 浏览器建立一个到 Web 缓存器的 TCP 连接,并向 Web 缓存器发送一个 HTTP 请求。
- 如果所请求对象在缓存中,Web 缓存器就向客户浏览器用 HTTP 响应报文返回该对象。
- 否则,Web 缓存器就打开一个与该对象的初始服务器的 TCP 连接,并向初始服务器发送对该对象的 HTTP 请求。当 Web 缓存器接收到该对象时,它在本地存储空间存储一份副本,并向客户的浏览器用 HTTP 响应报文发送该副本。
Web 缓存器是服务器的同时又是客户,当它接收浏览器的请求并发回响应时,它是一个服务器;当它向服务器发出请求并接收响应时,它是一个客户。
Web 缓存技术(代理服务器技术)可以缩短可以请求的响应时间,减少机构、组织的流量,并在大范围内(Internet)实现有效的内容分发。
但 Web 缓存技术还存在一个问题,即存放在缓存器中的对象副本可能与远端服务器上不一致。缓存服务器使用条件 GET 方法,证实它的对象是最新的:
- 请求报文使用 GET 方法;
- 请求报文中包含一个
If-Modified-Since:
首部行来声明所持有版本的日期。
服务器:
- 如果缓存的版本是最新的,则响应消息中不包含对象;
HTTP/1.0 304 Not Modified
。