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是一对,它俩会进行对比。
强制缓存和协商缓存
- 强制缓存
- 协商缓存
缓存改进方案
md5/hash缓存
通过不缓存html,为静态文件添加MD5或者hash标识,解决浏览器无法跳过缓存过期时间主动感知文件变化的问题。
CDN缓存
CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。
说明:图片截图自慕课网视频