数据库缓存
将查询的表放入内存中存储,需要再次查找的时候直接从内存中获取(redis)
CDN缓存
通过CDN访问内容最近最快的路劲,网站管理员部署,将常用的内容放入CDN节点
代理服务缓存
第三方边缘服务器优化缓存
浏览器缓存
-
强缓存
关键词
-
expires
- HTTP 1.0 字段
- 到其时间,根据判断是否到期作为强缓存时间依据
- 因为获取的是本地时间,所以修改本地时间可改变缓存时间
-
cache-control
- disk cache 本地缓存
- 图片,等大文件一般缓存到本地硬盘中
- memory cache 内存缓存
- 数据类存入到计算机内存
- 两种缓存方式有浏览器自动调配
- disk cache 本地缓存
-
pragma
-
协商缓存
为什么有HTTPS 协议
- HTTPS 是基于HTTP 2.0协议上增加了一个TLS 加密协议
- HTTP 传输协议是明文传输的,为了防止再传输过程中,被中间劫持谷歌增加了非对称加密
- HTTPS 会增加了握手的时长
- HTTPS 交互过程 ... 后期补全
HTTP code 码标识
- 1xx 表示协议处理中间状态,还需要后期处理
- 2xx 表示成功状态
- 3xx 表示重定向,资源位置发生改变需要重新请求
- 4xx 表示请求报文有误
- 5xx 表示服务端发生错误
TCP 三次握手
- 第一次握手,客户端向服务端发送SYN包(seq=j),此时客户端进入SYN-SENT
- 第二次握手,服务端收到客户端的SYN包并对SYN包加1(seq=j+1),并发送SYN+ACK(seq=k),服务端进入SYN-RECV状态
- 第三次握手,客户端收到服务端的SYN+ACK包,发送ACK(seq=k+1),发送完成后并与服务器建立连接。
注释:[^SYN 同步字符] [^ACK 确认字符]
百度百科:
第一次握手:建立连接时,客户端发送syn包(seq=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个ACK包(seq=k),即SYN+ACK包,此时服务器进入SYN_RECV状态。
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
TCP 四次挥手
- 第一次挥手,客户端向服务器发送fin标志位报文,并告诉服务端要断开连接,客户端状态由established变为fin-wait-1
- 第二次挥手,服务到收到客户端fin报文,并发送ACK报文,告诉客户端要关闭的连接,服务端从established变成close_wait,,客户端收到ACK报文,状态变为fin-wait-2
- 第三次挥手,服务端应用可以关闭连接,并向客户端发送fin 报文,服务端用close-wait编程last-wait
- 客户端收到find报文,回复ACK报文,客户端状态从fin-wait-2变为time-wait,服务端收到ACK报文后直接关闭,将状态变为close
百度百科
由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。
第一次挥手:TCP客户端发送一个FIN,用来关闭客户到服务器的数据传送。
第二次挥手:服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。
第三次挥手:服务器关闭客户端的连接,发送一个FIN给客户端。
第四次挥手:客户端发回ACK报文确认,并将确认序号设置为收到序号加1。
function showNavigationDetails() {
const [entry] = performance.getEntriesByType("navigation");
console.table(entry.toJSON());
}
showNavigationDetails(); //查看各个地方的相应事件
//关于我们的Web性能,我们会用到的时间参数:
//DNS解析时间: domainLookupEnd - domainLookupStart
//TCP建立连接时间: connectEnd - connectStart
//白屏时间: responseStart - navigationStart
//dom渲染完成时间: domContentLoadedEventEnd - navigationStart
//页面onload时间: loadEventEnd - navigationStart
HTTP 1.1 与 HTTP 2.0 有什么提升
- 头部压缩
- 多路复用
- 持久化链接
- 增加cache-control