我们想访问一个网站时,每次按下回车或是点击链接,都希望网站页面能尽快的映入到我们眼帘,那您知道每次等待的时间中,都发生了什么?
我们需要知道,在网络中,两个设备间的通信是需要 IP 地址才可以的,也就是说,您每次访问网站时,都是通过 IP 地址实现的,可您输入的明明是域名,并不是 IP,这又是什么情况呢?
原因就是您的电脑,会自动去询问设置在您电脑上的 DNS 服务器,然后通过 DNS 服务器返回的 IP 地址访问网站。而询问的过程,就是域名查询时间,大家可以用 Ping 命令,测试一下与 DNS 服务器的连接时间,可以大致得出域名查询时间。为什么说大致,因为 Ping 命令只可以测出连接时间,DNS 还需要处理!
电脑知道要访问网站的 IP 后,就会与之通信,而在网络中与之通信的不止是您一个,那么多人同时访问,先处理谁后处理谁?这时就需要排队了!排到您了,服务器自然会处理您的请求。
当然不只是网络资源要排队,服务器的内部处理进程,也需要排队的,等待排队还有数据处理,都需要时间的!
以我们的常见的博客程序 WordPress 为例,WordPress 是用 PHP 语言所写,通过 MySQL 来存储数据,Nginx 为页面解析。所以 PHP 首先去找 MySQL 索要数据,然后再通过 Nginx 服务生成页面数据。
您的每次浏览 PHP 都需要去 MySQL 中索要一次数据,然后再经过 Nginx 生成,所以您会发现,有些网站打开后再刷新,速度并没有变很快!
页面数据传输到您的浏览器之后,您的浏览器就会开始加载页面数据包含的文件,例如 JavaScript 库、CSS 样式表、图片等等,这些时间就取决于您的带宽和浏览器的处理能力了。
一般的浏览器会默认缓存这些静态类文件「简单来说就是不会经常变的文件」使得再刷新时,不用重新下载,从而加快浏览速度!