web是基于HTTP协议的,这里我们不会涉及太多HTTP协议的内容(毕竟需要一本书),我们只介绍CI中提到的相关知识。

协议版本

目前常用的HTTP版本有HTTP/1.1HTTP/2 ,在CI中还考虑了HTTP/1.0,但是这个版本实在是太老了,实践中没有太大考虑的必要。

状态码

状态码是对服务器返回结果的一种描述,我们最常见的状态码是200,表示正常返回结果。304也是常见的状态码,表示可以使用本地缓存结果,服务器不再重复返回响应内容。在CI中,500也用得比较普遍,表示服务器端异常。

Accept-Encoding

这个字段是客户端通知服务器端所支持的编码方式的,常见的有gzip压缩、compress压缩、deflate压缩等。在CI中会尝试使用gzip压缩来减少响应体的大小。

If-Modified-Since

客户端请求时可选的一个字段,用于确认本地资源是否还有效。服务器端通过比较资源的最后修改时间和该字段对应时间决定资源是否过期,若未过期,服务器端返回304,若过期,服务器端需要返回新资源。

Content-Encoding

客户端和服务器端均可使用的一个字段,用于表明报文主体的编码方式。在CI中是用来通知客户端报文主体采取了gzip压缩

Content-Length

用于表明报文主体的大小

Cache-Control

对于客户端和服务器端,这个字段有不同的值。在CI的实现中,用了两个值,一个是public,这个通知缓存服务器这个响应报文可以缓存,缓存结果可以给其他的客户端。另一个是max-age,以秒为单位通知客户端一定时间内使用本地缓存即可。这个字段其实比较复杂,在性能优化的时候经常用到。

Content-Type

要说清楚content-type字段,首先要要理解mime类型。资源是有类型的,可以是text类型(html文件、css都属于text类型,他们又分属于不同的子类型text/html、text/css),可以是image类型(gif、jpeg等),为了表示资源的类型就有了content-type这个字段。这个字段除了mime类型外,还包含资源的字符集。

和这个字段有关的一个字段是x-content-type-options。当浏览器接收到一个资源时,content-type可能是错误的,浏览器会尝试按照其他类型解析该资源,要禁止这一行为,需要设定x-content-type-options字段为nosniff。

Pragma

这个是HTTP1.0时代遗留下来的老字段了,是低配版的Cache-Control字段

Expires

这个字段表示资源的过期时间,类似于Cache-Control的max-age,而且两者均存在时优先处理max-age。

Last-Modified

表明报文主体最终被修改时间。

results matching ""

    No results matching ""