曾经毫不在意
曾几何时,我肆意遨游在网络中,浏览着各种网页,如新闻,游戏,电影等等,我寻找着我需要的,感动着我的感性,快乐着我的娱乐,享受着大片的刺激,我却从未思考过为何我能享受着这些。通过小小的输入框,我踏进了无限广大的世界,通过小小一个屏幕,我感受着前人也许一生都未曾明了、经历、见闻过的一切。
现在不明觉厉
现在我迷茫了,随着对前端兴趣的日益浓厚,以前键盘敲敲,鼠标点点就能在网络世界中畅游的我,渐渐开始想要探索究竟了。为什么打开浏览器在地址栏输入百度网址,按下回车,就进入了百度,为什么在搜索栏输入了关键字,你想要的内容就出来了,为什么伴随着花花绿绿,五颜六色的图片、视频,这究竟是怎么做到的。
答案终将揭晓
首先,想要知道如何实现,就要明白几个概念:
URL
统一资源定位符,用于定位互联网上的资源。浏览器通过url定位目标然后到达目标,比如https://www.baidu.com就是url。
域名://与/之间的内容就是域名,对于https://www.baidu.com/?ie=utf-8&rsv_op,www.baidu.com就是域名。对于https://www.baidu.com的URL,浏览器实际上不知道https://www.baidu.com到底是什么东西,需要查找https://www.baidu.com网站所在服务器的IP地址,才能找到目标,每一个网站都有一个相应的ip。
域名解析过程
1 浏览器缓存 – 浏览器会缓存DNS记录一段时间
2 系统缓存 - 从 Hosts 文件查找是否有该域名和对应 IP。
3 路由器缓存 – 一般路由器也会缓存域名信息。
4 ISP DNS 缓存 – 比如到电信的 DNS 上查找缓存。
5 如果都没有找到,则向根域名服务器查找域名对应 IP,根域名服务器把请求转发到下一级,直到找到 IP
服务器处理
通过ip找到目标之后,服务器会经过一系列的处理,把服务器文件打包到浏览器中。
浏览器处理
HTML字符串被浏览器接受后被一句句读取解析
解析到link 标签后重新发送请求获取css
解析到 script标签后发送请求获取 js,并执行代码
解析到img 标签后发送请求获取图片资源
绘制网页
浏览器根据 HTML 和 CSS 计算得到渲染树,绘制到屏幕上
js 会被执行
结语
以上是我对网页实现的粗浅理解,也许有谬误,但我相信,经过未来的努力学习,我会真正的明白一个网页是如何实现的。