浏览器缓存
把已请求并响应的WEB资源(HTML页面、图片、js文件、CSS文件、数据等)复制一个副本存储在浏览器的缓存中
缓存的好处
1、减少网络带宽的消耗
2、减少网络延迟
3、降低服务器的压力
Pragma: no-cahe(响应头中),指示浏览器忽略资源缓存副本,每次访问需要到服务器获取
HTTP1.0中的字段,HTTP1.1用Cache-Control替代(HTTP协议向下兼容,所以很多网站依旧有这个字段)
C
a
t
h
−
C
o
n
t
r
o
l
缓存控制在响应头中
\color{#00bfff}Cath-Control 缓存控制在响应头中
Cath−Control缓存控制在响应头中
no-cache:指示浏览器忽略资源缓存副本,强制到服务器获取资源(浏览器仍然会缓存)
no-stroe: 强制缓存任何情况下都不要保留任何副本
max-age = 31536000: 只是缓存副本的有效时长,从请求开始到过期时间之间的秒数
**public:**表明可以被任何对象(包括发送请求的客户端,代理服务器等等)
private: 表面响应只能被单个用户缓存,不能作为共享缓存
Expires 启用缓存和定义缓存时间,告诉浏览器资源缓存过期时间,如果没有过该时间则不发请求
在HTTP1.1版本开始,使用Cache-Control:max-age = 秒 替代
浏览器请求的流程,有缓存的情况下(没有缓存就直接请求服务器)
- 浏览器先查看缓存是否过期
- 如果没过期,直接从浏览器中读取缓存获取数据
- 如果缓存过期,向服务器发起请求,请求头中携带if-None-Match/if-Modified-Since向服务器 发起请求
- 服务器对if-None-Match/if-Modified-Since字段进行对比,如果服务器资源没被修改,就返回304重定向,浏览器在缓存中读取数据,如果资源修改了就返回200,和新的资源
connection:keep-alive
HTTP短连接与长连接
短链接:所谓短连接,就是每次请求一个资源就建立连接,请求完成后连接立马关闭
长连接:只建立一次连接,多次资源请求都复用该连接,完成后关闭
早期HTTP1.0:每个请求都要创建一个TCP/IP连接,后期HTTP1.0在请求头中增加Connection:keep-alive
HTTP1.1默认开启:Connection:keep-alive,如需关闭:close
Connectionkeep-alive在大多数浏览器中默认使用HTTP/1.1,服务器也须由相应的支持才能达到C/S协议进行长连接
content-length
content-length用于描述HTTP消息实体的传输长度
GET请求:
请求头没有
c
o
n
t
e
n
t
−
l
e
n
g
t
h
,响应头带
c
o
n
t
e
n
t
−
l
e
n
g
t
h
\color{#baf}请求头没有content-length,响应头带content-length
请求头没有content−length,响应头带content−length
POST请求:请求头与响应头都带content-length
referer
referer: (
来源域名
\color{#daa}来源域名
来源域名)referer是request headers的一部分,当浏览器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的
好处
\color{#adf}好处
好处:可通过referer分析不同渠道的流量分布、用户搜索的关键词
不发送referer信息:
<
m
e
t
a
n
a
m
e
=
"
r
e
f
e
r
r
e
r
"
c
o
n
t
e
n
t
=
"
n
o
−
r
e
f
e
r
r
e
r
"
>
\color{#abf}<meta name="referrer" content="no-referrer">
<metaname="referrer"content="no−referrer">
R
e
f
f
e
r
r
P
o
l
i
c
y
:
n
o
−
r
e
f
e
r
r
e
r
\color{#fdd}Refferr Policy: no-referrer
RefferrPolicy:no−referrer
无
r
e
f
e
r
r
e
r
字段
\color{#e09045}无referrer字段
无referrer字段
只发送Referer:origin信息
<
m
e
t
a
n
a
m
e
=
"
r
e
f
e
r
r
e
r
"
c
o
n
t
e
n
t
=
"
o
r
i
g
i
n
"
>
\color{#abf}<meta name="referrer" content="origin">
<metaname="referrer"content="origin">
R
e
f
f
e
r
r
P
o
l
i
c
y
:
o
r
i
g
i
n
(
源域名地址
)
r
\color{#fdd}Refferr Policy: origin(源域名地址)r
RefferrPolicy:origin(源域名地址)r
R
e
f
e
r
r
e
r
:
h
t
t
p
:
/
/
l
o
c
a
l
h
o
s
t
/
\color{#e09045}Referrer:http://localhost/
Referrer:http://localhost/
默认情况发送Referer信息
Referrer Policy: no-referrer-when-downgrade(仅当协议降级比如HTTPS页面引入HTTP资源时发送)
HTML不设置
Referer: http://localhost/network/class5/
Referer应用场景
资源防止盗链: 服务器拉取资源之前判断referer是否是自己的域名或IP,如果不是就拦截,如果是就拉取资源
另一种防盗链方式 —>时间戳防盗链:
通过时间戳和签名规则生成密钥,将密钥和资源一起发送给服务器,服务器判断密钥是否过期和密钥是否匹配,如果都通过就返回资源,其中一个不通过就阻止资源获取
\color{#ff00dd}通过时间戳和签名规则生成密钥,将密钥和资源一起发送给服务器, 服务器判断密钥是否过期和密钥是否匹配,如果都通过就返回资源,其中一个不通过就阻止资源获取
通过时间戳和签名规则生成密钥,将密钥和资源一起发送给服务器,服务器判断密钥是否过期和密钥是否匹配,如果都通过就返回资源,其中一个不通过就阻止资源获取