1、http的含义
HTTP(Hyper Text Transfer Protocol),超文本传输协议,是在计算机世界里用来在两点之间传输文本、视频、图片等超文本的行为和规范。
2、post和get的区别
- get是从服务器获取指定的资源,get方法是安全且幂等的、可被缓存的, GET 用 URL 传输数据。
- post是根据请求对指定的资源作出处理,post方法是不安全的且不幂等的,不可缓存的,POST 用 body 传输数据。
3、HTTP的缓存技术有哪些?
http的缓存技术主要是为了减少一些重复的get请求,主要有两种缓存技术,分别是强制缓存和协商缓存。
– 强制缓存:强制缓存的决定权在浏览器,只要浏览器判断缓存没有过期,则调用本地浏览器的缓存。浏览器通过Cache-Control(相对时间,级别高于Expires)和Expires(绝对时间)。
流程:
- 浏览器第一次请求资源时,服务器在返回 资源的同时在Response 头部加上Cache-Control,Cache-Control
中设置了过期时间大小; - 浏览器再次请求访问服务器中的该资源时,会先通过请求资源的时间与 Cache-Control
中设置的过期时间大小,来计算出该资源是否过期,如果没有,则使用该缓存,否则重新请求服务器; - 服务器再次收到请求后,会再次更新 Response 头部的 Cache-Control。
协商缓存:一般看到某些请求返回的状态码是304时,则说明浏览器可以使用本地缓存的资源,通常这种通过服务端告知客户端是否可以使用缓存的方式被称为协商缓存。协商缓存就是与服务端协商之后,通过协商结果来判断是否使用本地缓存。
两种方式实现协商缓存:
1)请求头部中的 If-Modified-Since 字段与响应头部中的 Last-Modified 字段实现。通过对比这两个时间,如果最后修改的时间较新,则说明改动过,返回新的资源,否则响应304。
2)请求头部中的 If-None-Match 字段(唯一标识响应资源)与响应头部中的 ETag 字段,当资源过期时,浏览器发现响应头里有 Etag,则再次向服务器发起请求时,会将请求头 If-None-Match 值设置为 Etag 的值。服务器收到请求后进行比对,如果资源没有变化返回 304,如果资源变化了返回 200。