http

2019-08-08  本文已影响0人  阿凯_8b27

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>

上一篇下一篇

猜你喜欢

热点阅读