1、TCP/IP 模型有几层?它们分别解决了什么问题
物理层:网线传输比特流
数据链路层:解决了局域网内主机间通信
网络层:解决了两个局域网之间的通信
传输层:解决了数据传输到主机后,应该交给哪个进程处理的问题w
2、HTTP 有哪些常见的状态码
1、200 OK
: 请求成功
2、301 Moved Permanently
: 永久重定向
3、302 Found
: 临时重定向
4、304 Not Modified
: 所请求的资源未修改
5、 400 Bad Request
: 客户端请求的语法错误,服务器无法理解
6、401 Unauthorized
: 请求要求用户的身份认证
7、403 Forbidden
: 服务器拒绝执行此请求
8、404 Not Found
: 要请求的资源没有找到
9、 500 Internal Server Error
: 服务器内部错误
3、为什么服务器有时候会返回 304 状态码
先上一张HTTP请求流程图:
浏览器进行资源请求时,大致会经过如下几个阶段:
1、是否禁止缓存
禁止缓存指的是缓存中不得存储任何关于客户端请求和服务端响应的内容。每次由客户端发起的请求都会下载完整的响应内容。
在请求头中,Cache-Control: no-store
与 Pragma: no-cache
都可以禁止缓存,
但两者也有区别,Pragma: no-cache
可以兼容 http 1.0
,而 Cache-Control: no-store
是http 1.1
提供的。因此, Pragma: no-cache
可以应用到http 1.0
和 http 1.1
,而 Cache-Control: no-store
只能应用于http 1.1
。
2、是否检查本地副本是否过期
是否检查本地版本是否过期主要由 Cache-Control
的 no-cache
和must-revalidate
这两个可选值控制,其中:
no-cache
must-revalidate
3、本地副本是否过期
想要知道本地副本是否过期,我们就需要了解 缓存的过期机制 :
(1)、过期机制中,最重要的指令是 max-age=<seconds>
,它表示资