详见:可能是最详细的HTTP状态码介绍
-
2XX
:成功 -
3XX
:重定向 -
4XX
:客户端错误 -
5XX
:服务器错误 -
1XX
: 请求处理中
常见状态码
状态码 | 描述 | 实例场景 |
---|---|---|
101 | Switching Protocols |
客户端申请websocket连接时,会先发出一个http请求,请求头部声明Connection:Upgrade Upgrade:websocket,然后服务器响应状态码为101,表示切换协议,接下来就可以以websocket协议通讯了。 |
200 | OK |
最常见的状态码,表示成功响应,返回数据。 |
206 | Partial Content |
当文件下载到一半后申请续传,会在请求头中的Range标记需要哪部分的数据,针对这种请求,会返回206和范围数据。 |
301 | Moved Permanently |
更换服务器域名时,一般不会立刻关停旧服务器域名,用户试图访问旧域名时,返回301,并且响应头中Location字段说明新的地址,然后浏览器自动跳转到新的地址。 |
304 | Not Modified |
客户端通过在请求头上声明If-Modified-Since字段校验缓存是否有效,如资源在此日期后并未改动,则返回304表示资源在此日期后没有更新过 |
400 | Bad Request |
当服务器要求必须有一些url参数时,但请求没有带上或者参数名写错了,会返回400 |
403 | Forbidden |
当浏览器通过js提交跨域的复杂请求时,会先发送一个OPTION请求,如果服务器检测不允许其跨域请求,则返回403 |
404 | Not Found |
找不到请求资源,可能是url写错了 |
500 | Internal Server Error |
服务器报错导致返回500 |
HTTP缓存:协商缓存304
与强制缓存200 from cache
image.png
from memory cache
与from disk cache
image.png
随便打开一个网页后在浏览器开发者工具的Network
栏发现的细节。
A、浏览器Network的Size
栏: 3种情况
from memory cache
from disk cache
资源本身大小(比如:13.6K)
B、三级缓存原理
- 1 先查找内存,如果内存中存在,从内存中加载;
- 2 如果内存中未查找到,选择硬盘获取,如果硬盘中有,从硬盘中加载;
- 3 如果硬盘中未查找到,那就进行网络请求;
- 4 加载到的资源缓存到硬盘和内存;
C、HTTP状态码及区别
200 form memory cache
不访问服务器,一般已经加载过该资源且缓存在了内存当中,直接从内存中读取缓存。浏览器关闭后,数据将不存在(资源被释放掉了),再次打开相同的页面时,不会出现from memory cache
200 from disk cache
不访问服务器,已经在之前的某个时间加载过该资源,直接从硬盘中读取缓存,关闭浏览器后,数据依然存在,此资源不会随着该页面的关闭而释放掉下次打开仍然会是from disk cache
304 Not Modified
访问服务器,发现数据没有更新,服务器返回此状态码。然后从缓存中读取数据。
浏览器是根据什么决定「from disk cache」与「from memory cache」?贴下某个回答
-
第一个现象(以图片为例):
访问-> 200 -> 退出浏览器再进来-> 200(from disk cache) -> 刷新 -> 200(from memory cache)
总结: 会不会是chrome很聪明的判断既然已经从disk拿来了, 第二次就内存拿吧 快。 -
第二个现象(以图片为例):
只要图片是base64 我看都是from memroy cache。
总结: 解析渲染图片这么费劲的事情,还是做一次然后放到内存吧。 用的时候直接拿 -
第三个现象(以js css为例):
个人在做静态测试的发现,大型的js css文件都是直接disk cache
总结:chrome会不会说 我擦 你这么大 太JB占地方了。 你就去硬盘里呆着吧。 慢就慢点吧。 -
第四个现象:隐私模式下
几乎都是 from memroy cache.
总结: 隐私模式 是吧。 我不能暴露你东西。还是放到内存吧。 你关,我死。
网友评论