http基础

146 阅读4分钟

http状态码

1xx: 代表请求已被接受,需要继续处理。

2xx: 表示成功。

3xx: 表示重定向。

4xx: 表示请求错误。

5xx: 表示服务器错误。

常用状态码

200 请求已成功,数据已返回。

301 请求的资源已被永久移动到新的URI。

302 资源临时移动。

304 资源已缓存。

400 客户端请求的语法错误,服务器无法理解。

401 请求要求用户的身份认证。

403 服务器拒绝请求。

404 服务器找不到资源。

500 服务器内部错误。

502 网关错误。

http状态管理: Cookie与Session

cookie

Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就向客户端浏览器颁发一个Cookie;

客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。

Session

Session是另一种记录客户状态的机制,保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户信息以某种形似记录再服务器上;

客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。

区别

存放位置不同: Cookie存放在客户端,Session存在服务端;

安全性(隐私策略)不同: Cookie是在浏览器里,对客户端是可见的,容易被窥探;Session在服务器,窥探不到;

有效期不同: Cookie可以设置过期事件,Session关闭浏览器就会失效;

对服务器的压力不同: Session存放在服务端,容易造成压力。

http缓存

常见headers

request Headers

  • Accept 浏览器可接收的数据格式
  • Accept-Encoding 浏览器可接收的压缩算法,如gzip
  • Accept-Languange 浏览器可接收的语言,如zh-CN
  • Connection: keep-alive 一次TCP连接重复使用
  • cookie
  • Host 请求的域名
  • User-Agent 浏览器信息
  • Content-type 发送数据格式

response Headers

  • Content-type 返回数据格式
  • Content-length 返回数据的大小,多少字节
  • Content-Encoding 返回数据的压缩算法,如gzip
  • set-cookie 服务端改cookie

http缓存头部字段

Cache-Control 请求/响应头,缓存控制字段

  • no-store: 所有内容都不缓存,不用本地缓存也不用服务端的缓存措施。

  • no-cache: 不用本地缓存,正常向服务端请求,但是服务端是什么缓存机制就不关心了。

  • max-age=x(单位秒)请求缓存后的x秒不再发起请求。

  • s-maxage=x(单位秒)代理服务器请求源站缓存后的x秒不再发起请求,只对CDN缓存有效。

  • public 客户端和代理服务器(CDN)都可以缓存。

  • private 只有客户端可以缓存。

Expires 响应头,代表资源过期时间,由服务器返回提供,是HTTP1.0的属性,在与max-age共存的情况下,优先级要低。

Last-Modified响应头,资源最新修改时间,由服务器告诉浏览器。

if-Modified-Since 请求头,资源最新修改时间,由浏览器告诉服务器,和Last-Modified是一对,她俩会进行对比。

Etag 响应头,资源标识,由服务器告诉浏览器。

if-None-Match 请求头,缓存资源标识,由浏览器告诉服务器(其实就是上次服务器给的Etag),和Etag是一对,它俩会进行对比。

image.png

image.png

image.png

强制缓存和协商缓存

  • 强制缓存 image.png
  • 协商缓存

image.png image.png

image.png

缓存改进方案

md5/hash缓存

通过不缓存html,为静态文件添加MD5或者hash标识,解决浏览器无法跳过缓存过期时间主动感知文件变化的问题。

CDN缓存

CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。

image.png

image.png

说明:图片截图自慕课网视频