第6章 HTTP首部
cache-control: 取值有哪些,分别代表什么意思,是怎么作用的?跟缓存有关系,
取值比较常见的有no-cache,如果在响应头中,代表源服务器跟缓存服务器说,你可以使用缓存,但是每次使用都要通知我一下。如果在请求头中,代表客户端跟缓存服务器说,我不要缓存,你直接从源服务器上拿资源。
1.no-cache指令
2.no-store指令
代表传输的信息是保密的,不允许存储。
3.max-age指令
从客户端的角度:如果请求头中有max-age这个参数,那么,缓存服务器拿到参数后,会根据其值判断资源是否过期,如果过期,会向源服务器重新请求新的资源。
从源服务器角度:如果响应头中有max-age这个参数,那么,源服务器在告诉缓存服务器,我这个资源只要没过期,你都不用跟我要新的。
另外,cache-control可能的取值还有:max-stale、only-if-cache、must-revalidate、proxy-revalidate、no-transform
6.3.2 Connection
connection有2个作用:
1.控制不再转发给代理的首部字段
2.管理持久连接
6.3.3 Date字段
首部字段Date为创建报文的时间。
6.3.4 Pragma
这个字段是http1.1之前的遗留字段,为了兼容http1.0。一般用在客户端上,意思为告诉中间服务器,我不要缓存资源。
所有的中间服务器如果都能以 HTTP/1.1 为基准,那直接采用 Cache-Control: no-cache 指定缓存的处理方式是最为理想的。但要整体掌握全部中间服务器使用的 HTTP 协议版本却是不现实的。因此,发送的请求会同时含有下面两个首部字段。
Cache-Control: no-cache Pragma: no-cache
这个字段说明,在报文主体后有哪些重要字段,以免服务器忘记查看,一般用来分块传输。
6.3.6 Transfer-Encoding
6.3.7 Upgrade
客户端利用此字段询问服务端,能让我使用更高版本或者其他协议通信吗?
6.3.8 via
资源在各个代理服务器,或者中转服务器之间转发时,都会在报文头部加上此字段,以便用来追踪资源的踪迹。
6.3.9 warning
6.4 请求首部字段
6.4.1 accept
q表示权重,返回数据格式的优先级。
数据格式包括:文本、图片文件、视频文件、应用程序使用的二进制文件
6.4.2 accept-charset
通知服务器,可以接收的资源的字符集
6.4.3 accept-encoding
用户代理告诉服务器,是否可以把压缩过后的资源吐给他。
6.4.4 accept-language
告诉服务器,它想要的资源的语言
6.4.5 authorization