什么是URL
URL(Uniform Resource Locator)是统一资源定位符的简称,是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,每个文件都有对应的唯一一个URL。它包含文件的位置以及浏览器应该怎样去处理。
基本的URL包含协议、服务器名称(IP地址)、路径和文件名。
协议
协议告诉浏览器如何处理将要打开的文件。常用的模式有http、https、ftp和file等。
域名解析
域名解析是指把域名指向IP地址,让人们通过注册的域名可以方便地访问到网站的一种服务。IP地址是指网络上表示站点的数字地址。用域名去替代IP地址是由于域名的语义化的优势,更方便人们去记忆。域名解析的工作由DNS服务器完成。
当我们在浏览器中输入一个URL开始搜索后, 会先在下面的缓存文件中查找记录:
1.浏览器缓存 – 浏览器中会缓存DNS记录一段时间;
2.系统缓存 - 从 Hosts 文件查找是否有该域名和对应 IP;
3.路由器缓存 – 一般路由器也会缓存域名信息;
4.ISP DNS 缓存 – 比如到电信的 DNS 上查找缓存。
如果都没有找到,则向根域名服务器查找域名对应 IP,根域名服务器把请求转发到下一级,直到找到 IP。
服务器处理
服务器是一台安装系统的机器,常见的系统如Linux、windows server 2012等。
系统里安装的处理请求的应用叫 Web server(web服务器)。常见的 web服务器有 Apache、Nginx、IIS、Lighttpd等。
web服务器接收用户的Request 交给网站代码,或者接受请求反向代理到其他 web服务器。
网站处理
网站处理,就是实际后台处理的工作。后台开发现在有很多框架,但大部分都还是按照MVC设计模式进行搭建的。
MVC是一个设计模式,将应用程序分成三个核心部件:模型(model)-- 视图(view)--控制器(controller),它们各自处理自己的任务,实现输入、处理和输出的分离。
视图(view)
视图是用户看到并与之交互的界面。这是前端工作的主要部分。
模型(model)
模型是将实际开发中的业务规则和所涉及的数据格式模型化,应用于模型的代码只需写一次就可以被多个视图重用。在MVC的三个部件中,模型拥有最多的处理任务。一个模型能为多个视图提供数据。
控制器(controller)
控制器接受用户的输入并调用模型和视图去完成用户的需求。Controller处于管理角色,从视图接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示模型处理返回的数据。
总结:首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回html字符串给浏览器,浏览器呈现网页给用户。
浏览器处理
通过后台处理返回的html字符串结果会被浏览器读取解析,对应就是html页面加载、解析、渲染的工作。
加载
HTML字符串被浏览器接受后被一句句读取解析,解析到link 标签后重新发送请求获取css;解析到 script标签后发送请求获取 js,并执行代码;解析到img 标签后发送请求获取图片资源。并同步进行加载解析。
解析、渲染
解析的过程,其实就是生成解析树,即dom树。dom树是由dom元素及属性节点组成,加上css解析的样式对象和js解析后的动作实现。而渲染,就是将DOM树进行可视化表示。浏览器根据 HTML 和 CSS 计算得到渲染树,绘制到屏幕上,js 会被执行,由此最终完成了页面展示,也就得到我们想要的结果了。