http
http协议 全称HyperText Transfer Protocol,超文本传输协议,一种比较广泛的网络传输协议
工作原理
客户端向服务端发生消息,服务接受请求后想客户端发送响应信息
http默认端口80
http是无连接 ,连接一次后就断开,确定效率
http是媒体独立,任何类型都可以通过参数来指定
http是无状态的 对事务处理没有记忆能力,缺少状态意味后续的东西需要前面的东西就需要重新传输
基础方法 GET, POST 和 HEAD方法。
扩展六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
状态码
200 - 请求成功
301 - 资源(网页等)被永久转移到其它URL
404 - 请求的资源(网页等)不存在
500 - 内部服务器错误
403收到资源网络权限限制,不让访问
content-type 代表资源类型
具体可在network下看,xhr调用服务端,img图片 等
1.Expires 响应头,代表该资源的过期时间。
服务器和浏览器约定文件过期时间,用 Expires 字段来控制,时间是 GMT 格式的标准时间,如 Fri, 01 Jan 1990 00:00:00 GMT。
2.Cache-Control 请求/响应头,缓存控制字段,精确控制缓存策略。
为了兼容已经实现了上述方案的浏览器,同时加入新的缓存方案,服务器除了告诉浏览器 Expires ,同时告诉浏览器一个相对时间 Cache-Control:max-age=10秒。意思是在10秒以内,使用缓存到浏览器的 a.js 资源。
浏览器先检查 Cache-Control,如果有,则以 Cache-Control 为准,忽略 Expires。如果没有 Cache-Control,则以 Expires 为准
public,资源允许被中间服务器缓存。
浏览器请求服务器时,如果缓存时间没到,中间服务器直接返回给浏览器内容,而不必请求源服务器。
private,资源不允许被中间代理服务器缓存。
浏览器请求服务器时,中间服务器都要把浏览器的请求透传给服务器。
no-cache,浏览器不做缓存检查。
每次访问资源,浏览器都要向服务器询问,如果文件没变化,服务器只告诉浏览器继续使用缓存(304)。
no-store,浏览器不缓存资源。
每次访问资源,浏览器都要请求服务器,并且,服务器不去检查文件是否变化,而是直接返回完整的资源。
must-revalidate,可以缓存,但是使用之前必须先向源服务器确认。
proxy-revalidate,要求缓存服务器针对缓存资源向源服务器进行确认。
s-maxage:缓存服务器对资源缓存的最大时间。
3.If-Modified-Since 请求头,资源最近修改时间,由浏览器告诉服务器。
携带信息,当 a.js 过期时,浏览器带上 If-Modified-Since(等于上一次请求的Last-Modified) 请求服务器。
4.Last-Modified 响应头,资源最近修改时间,由服务器告诉浏览器。
携带信息 ,还要告诉浏览器 a.js 在服务器上的最近修改时间 Last-Modified (GMT标准格式)
5.Etag 响应头,资源标识,由服务器告诉浏览器。
为了解决文件修改时间只能精确到秒带来的问题,我们给服务器引入 Etag 响应头,a.js 内容变了,Etag 才变。内容不变,Etag 不变,可以理解为 Etag 是文件内容的唯一 ID。
同时引入对应的请求头 If-None-Match,每次浏览器请求服务器的时候,都带上If-None-Match字段,该字段的值就是上次请求 a.js 时,服务器返回给浏览器的 Etag。
If-None-Match 请求头,缓存资源标识,由浏览器告诉服务器。
基础缓存方式
版本号:<script src="http://test.com/a.js?version=0.0.1"></script>
MD5hash 值来区分。<script src="http://test.com/a.【hash值】.js"></script>