浏览器缓存
把已请求并返回的WEB资源(HTML页面 图片 JS文件 CSS文件 数据等)复制成一个副本存储在浏览器的缓存中
缓存的好处
1.减少网络带宽的消耗
2.降低服务器压力
3.减少网络延迟
Pragma(响应头)
Pragma:no-cache
指示浏览器忽略资源缓存副本 每次访问需要到服务器获取
http1.0中字段 http1.1用Cache-Control替代 (http协议向下兼容 所以很多网站依旧有这个字段)
Cache-Control(响应头)
缓存控制
no-cache:指示浏览器忽略资源缓存副本 强制到服务器获取资源(浏览器依然缓存)
no-store:强制缓存在任何情况下都不需要保留任何副本
max-age=31536000:指示缓存副本的有效时长 从请求时间开始到过期时间之间的妙数
public:表明响应可以被任何对象(包括:发送请求的客户端 代理服务器等)缓存
private:表明响应只能被单个用户缓存 不能作为共享缓存(即代理服务器不能缓存它)
expires
expires: Fri, 13 Oct 2023 19:55:26 GMT 格林威治时间
启用缓存和定义缓存时间 告诉浏览器资源缓存过期时间 如果还没过改时间点则不发送请求
在HTTP1.1版开始 使用Cache-Control:max-age=妙替代
浏览器缓存流程
优先验证Etag 一致的情况下才验证Last-Modified
长连接与短链接
HTTP短链接与长连接
短链接 就是被刺请求一个资源就建立连接 请求完以后立马关闭
创建TCP连接 请求资源 响应资源 断开连接
长连接 只建立一次连接 多次资源请求复用该连接 完成后关闭
早期HTTP1.0每个HTTP请求都要创建一个TCP/IP连接
串行连接(短连接)
后期的HTTP/1.0
在请求头增加:contention:keep-alive
HTTP/1.1
默认开启:Connection:keep-alive
如需关闭:Connection:close
注意:Connection:keep-alive在大多数浏览器中都默认使用HTTP/1.1
服务器也需由响应的支持才能达成C/S协议进行长连接
referer
Referer (来源域名) :Referer是request header的一部分 当浏览器向web服务器发送请求的时候 一般会带上Referer 告诉服务器我是从哪个页面连接过来的
好处:可通过Referer分析不同渠道的流量分布 用户搜索的关键词
案例
不发送Referer信息
Referrer Policy:no-referrer
无referer字段
只发送Refer:origin信息
Referrer Policy:origin
Referer:http://localhost/
发送Referer信息
Referrer Policy:no-referrer-when-downgrade
仅当协议降级(如HTTP5页面引入HTTP资源)时不发送Referrer信息 是大部分浏览器默认策略
Referer:http://localhost/network/class5/
应用场景
资源防止盗链
服务器拉取资源之前判断referer是否是子集的域名或IP 如果不是就拦截 如果是则拉取资源