饥人谷技术博客

从 URL 输入到页面展现发生了什么

2017-02-24  本文已影响0人  饥人谷_菠萝

一、从浏览器输入URL

URL(Uniform Resoure Locator) 统一资源定位器。
举个栗子:个人身份证、家里的门牌号。具有唯一性

标准格式:协议类型://服务器地址(必要时需加上端口号)/路径/文件名

日常使用:
传送协议(http 绝大多网页不用输入http 是因为网页内容是超文本传输协议文件)
服务器。(通常是域名或是ip地址)
端口号。(以数字方式表示,若为HTTP的默认值“:80”可省略)
路径。(以“/”字符区别路径中的每一个目录名称)
查询。(GET模式的窗体参数,以“?”字符为起点,每个参数以“&”隔开,再以“=”分开参数名称与数据,通常以UTF8的URL编码,避开字符冲突的问题)

二、域名解析

baidu.com 就是一个域名,但浏览器不认识域名,所以需要通过DNS(域名系统)将该域名解析成IP地址。当电脑没找到该IP地址就会往上跳,查询上级服务器,还是没有,则向根域名服务器查找域名对应 IP,根域名服务器把请求转发到下一级,直到找到 IP。

为什么要发明域名,不直接用IP?

简单易记,更易分清。

三、服务器处理

服务器是一台安装系统的机器,常见的系统如Linux、windows server 2012
系统里安装的处理请求的应用叫 Web server。

Web服务器

Web服务器
常见的 web服务器有 Apache、Nginx、IIS、Lighttpd
web服务器接收用户的Request 交给网站代码,或者接受请求反向代理到其他 web服务器。

web服务器.png

第四步. 网站处理流程

MVC 模型(model)-视图(view)-控制器(controller)

rails_mvc

浏览器向 /users 发送请求
Rails 的路由把 /users 交给 Users 控制器的 index 动作处理
index 动作要求 User 模型读取所有用户(User.all)
User 模型从数据库中读取所有用户
User 模型把所有用户组成的列表返回给控制器
控制器把所有用户赋值给 @users 变量,然后传入 index 视图
视图使用嵌入式 Ruby 把页面渲染成 HTML
控制器把 HTML 送回浏览器

浏览器处理
HTML字符串被浏览器接受后被一句句读取解析
解析到link 标签后重新发送请求获取css
解析到 script标签后发送请求获取 js,并执行代码
解析到img 标签后发送请求获取图片资源

绘制网页
浏览器根据 HTML 和 CSS 计算得到渲染树,绘制到屏幕上
js 会被执行

上一篇下一篇

猜你喜欢

热点阅读