从URL输入到页面展现
URL输入 (浏览器发送请求)
URL:统一资源定为符(Uniform Resource Locator),用于定位资源;包含内容:协议,域名,端口号等等。
- 协议:http,file,https。
http://google.com.hk/ 定位位于web上的文件
file:///users/xxx/ 定位本地电脑上的文件
https://taobao.com/ http的安全版本,http是明文传输,https经过了加密。
//xxx/xxx/ 没有明确标明协议,表示和当前页面所用协议相同。
域名解析
- 根据域名找到相应的IP地址(域名是给人看的,浏览器看不懂域名的,要找到IP地址才行)DNS(Domain Name System):网络名称(域名)系统,域名和IP对应,这样计算机就找到IP了。
- 域名:google.com
- 端口号:80(http默认80;8080给root用户使用的)
- IP地址 公网IP和局域网IP是不同的。本机IP:127.0.0.1(调试手机时可以用这个测试)
域名解析过程
- 浏览器缓存DNS
- 本地缓存,hosts文件;和DNS不同,可以自己修改hosts文件(可以本地调试,127.0.0.1)。
- 路由器缓存DNS
- ISP(Internet Service Provider)缓存DNS
- 如果都没有找到的话,则向根域名服务器(全球有13台逻辑服务器,即根域名服务器只有13个IP,中国有3台镜像)查找域名对应IP,根域名服务器把请求转发到下一级,直到找到IP。
服务器处理(服务器收到请求后)
服务器用来处理请求的应用软件(web server),常见的有:Apache、Nginx、IIS、Lighttpd。
服务器处理流程(常说的后端)
- MVC(model-view-controller):模型-视图-控制器。
- 服务器应用常用语言:php、java、ruby、python、node.js。
- model是对数据库的抽象。受到请求后,需要使用数据库语言(sql语句)来操作数据库获得数据,但是太麻烦了,于是抽象出model。
- view是HTML的模板,拿到数据后,将数据填充到HTML模板,得到HTML文件。(常说的前端) //?常说的各种前端框架好像也是类型的结构啊。
- 处理完成后,返回请求和数据。
浏览器处理
- 收到服务器的返回请求后,浏览器开始处理。
- HTML字符串倍浏览器接收后被一句一句读取解析
- 解析到link标签后重新发送请求获取css
- 解析到script标签后发送请求获取js,并执行代码
- 解析到img标签后发送请求获取图片资源
好多请求啊(可以减少吗,如何减少)
绘制网页
- 浏览器根据HTML和CSS计算得到渲染树(好像是同时渲染的,js改变DOM后,还会进行渲染,这就涉及到性能优化了),绘制到屏幕上
- js会被执行
想要搞清楚,先看看 图解HTTP