URL到页面显示那些事

1. URL/URN/URI

-URL(Uniform Resource Locator):
	统一资源定位符,根据这个地址能找到对应的资源
-URL(Uniform Resource Name):
	统一资源名称,一般指国际上通用的(标准的)一些名字(例如:国际统一发版的编号)    
-URL(Uniform Resource Identifier):
	统一资源标识符,URL和URN是URI的子集

2.一个完整的URL所包含的内容

https://www.nowcoder.com:80/discuss/resume-review/index.html?form=wx&lx=1#zhenyu

  • 协议(http://): 传输协议,就是能够把客户端和服务端通信的信息进行传输的工具(类似于快递小哥);

    • http: 超文本传输协议(除了传递文本,还可以传递媒体资源文件(或者文件流)以及XML格式数据)
    • https: 更加安全的http,一般涉及支付的网站都要采用https协议(s: ssl加密传输)
    • ftp:文件传输协议(一般应用于把本地资源上传到服务端)
  • 域名(www.nowcoder.com): 一个让用户方便记忆的名字(不通过域名,直接通过服务器的外网IP也能访问到服务器,但是外网IP很难被记住)

    • 顶级域名 eg: qq.com
    • 一级域名 eg: www.qq.com
    • 二级域名 eg: sports.qq.com
    • 三级域名 eg: kbs.sports.qq.com
    • .com 国际域名
    • .cn 中文域名
    • .com.cn
    • .edu 教育
    • .gov 政府
    • .io 博客
    • .org 官方
    • .net 系统累
  • 端口号(:80): 端口号的取值范围:0~65535,用端口号来区分同一台服务器上的不同项目

    • http默认端口号:80
    • https默认端口号:443
    • ftp默认端口号:21
    • 如果项目采用的就是默认端口号,我们在书写地址的时候,不用加端口号,浏览器在发送请求的时候会帮我们默认加上
  • 请求资源路径名称(/discuss/resume-review/index.html)

    • 默认的路径或者名称(xxx.com/stu/ 不指定资源名,服务器会找到默认资源,一般默认资源名是default.html、index.html…当然这些可以在服务器端自己配置)
    • 注意伪URL地址处理(URL重写技术是为了增加seo搜索引擎优化的,动态的网址一般不能被搜索引擎收录,所以我们要把动态网址静态化,此时需要的是重写URL,后台重写)
  • 问号传参信息(?form=wx&lx=1)

    • 客户端想把信息传递给服务器,有很多种方式
      • URL地址问号传参
      • 请求报文传输(请求头和请求主体)
    • 也可以不同页面之间的信息交互,例如:从列表到详情
  • HASH值(#zhenyu)

    • 也能充当信息传输的方式
    • 锚点定位
    • 基于HASH实现路由管控(不同的HASH值,展示不同的组件和模块信息)

3.请求地址中出现非有效的UNICODE编码内容,现代版浏览器会默认的进行编码

  • 基于encodeURI编码, 基于decodeURI解码,我们一般用encodeURI编码的是整个URL,这样整个URL中的特殊字符都会自动编译
  • encodeURIComponent/decodeURIComponent它相对于encodeURI来说,不用于给整个URL编码,而是给URL部分信息进行编码(一般都是问号传参的 值编码)

客户端和服务端进行信息传递的时候,如果需要把请求的地址信息进行编码,我们给予以上两种方式处理,服务器端也存在这些方法,这样就可以统一编码解码了

  • 客户端还存在一种方式,针对于中文的编码方式escape/unescape,这种方式一般应用于客户端页面之间自己的处理,例如;从列表跳转到详情,我们可以把传递的中文信息基于这个编码,详情页获取编码后信息再解码,再比如我们在客户端中的cookie信息,如果信息是中文,我们也基于这种办法编码…

4.DNS服务器域名解析

DNS服务器:域名解析服务器,在服务器上存储着 域名<=>服务器外网IP的相关记录
而我们发送请求时候所谓的DNS解析,其实就是根据域名,在DNS服务器上查找对应服务器的外网IP

** DNS优化 **

  • DNS缓存(一般浏览器会在第一次解析后,默认建立缓存,时间很短,只有一分钟左右)
  • 减少DNS解析次数(一个网站中我们需要发送请求的域名和服务器尽可能减少)
  • DNS预获取(dns-prefetch):在页面加载开始的时候,就把当前页面中需要访问其他域名(服务器)的信息进行提前DNS解析,以后加载到具体内容部分就不用解析了

5.HTTP报文

  • 请求报文:所有经过传输协议,客户端传递给服务器的内容,都被称为请求报文
    • 起始行
    • 请求头(首部)
    • 请求主体
  • 响应报文:所有经过传输协议,服务器传递给客户端的内容,都被称为响应报文
    • HTTP状态吗
    • 响应头
    • 响应主体
  • HTTP报文:请求报文 + 响应报文

6.构建web服务器

  • 网站前后端都已经开发好了
  • 购买服务器(阿里云ECS<=>独立主机)【外网IP】
  • 服务器部署
    • 把项目资源上传到服务器FTP
    • 构建web服务器 tomcat/appache/iis/nginx/node…
      • 指定了项目目录
      • 制定了端口号(我们一般端口号用80/443)=> 服务器上除项目需要的环境之外其余所有东西都不要安装(保证绝对安全和端口不被占用等)
      • 还可以指定默认页,制定错误页,指定支持的资源文件类型等
      相当于创建了一个服务,后期客户端请求过来后,有这个服务负责接收请求,查找对应的资源文件,最后把信息返回给客户端 => “web 服务器”
  • 购买域名,并且进行DNS域名解析
  • 到工信部备案(基于第三方平台可代理备案)

7. http状态码

》1~5开头,三位数字

- 200 OK:成功
- 201 Created: 一般应用于告诉服务器创建一个新文件,最后服务器创建成功后返回的状态吗
- 204 No Content: 对于某些请求(例如:PUT或者 DETETE),服务器不想处理,可以返回空的内容,并且用204状态码告知
- 301 Moved Permanently: 永久重定向(永久转移)
- 302 Move Temporarily: 临时转移,很早以前基本用302来做,但是现在主要用307来处理这个事情,307的意思就是临时重定向Temporarily Redirect => 主要用于:服务器的负载均衡等
- 304 Not Modified:设置HTTP的协商缓存
- 400 Bad Request: 传递给服务器的参数错误
- 401 Unauthorized: 无权限访问
- 404 Not Found: 请求地址错误
- 500 Internal Server Error: 未知服务器错误
- 503 Service Unavailable: 服务器超负荷

8. 浏览器渲染

最新的Chrome浏览器包括:1个浏览器主进程,一个GPU进程,一个网络进程,多个渲染进程和多个插件进程
浏览器进程:主要负责界面显示、用户交互、子进程管理、同时提供存储等功能

渲染进程:核心任务将HTML、CSS和JavaScript转化为用户可以交互的网页,排版引擎Blink和JavaScript引擎V8都是运行在该线程。默认情况下,Chrome浏览器为每个标签页创建一个渲染进程,但从一个页面打开另一个页面,而新页面和当前页面属于同一站点的话,那么新页面会复用父页面的渲染流程。

GPU进程:GPU的初衷是为了使用3D CSS效果,随后网页、Chrome的UI界面都采用了GPU来绘制,使得GPU成为浏览器普遍的需求,Chrome在其多进程架构上也引入了GPU进程。

网络进程:主要负责页面的网络资源加载。

插件进程:主要负责插件的运行,因插件容易崩溃,所以需要通过插件进程来隔离,保证插件进程崩溃不会对浏览器和页面造成影响。

完整的渲染流程大致总结如下:

  • 渲染引擎将HTML内容转换为DOM树结构

  • 渲染引擎将CSS样式表转化为浏览器理解的styleSheets,计算DOM节点样式

  • 创建布局树,计算元素的布局信息

  • 对布局树进行分层,生成分层树

  • 对每个图层生成绘制列表,并将其提交到合成线程

  • 合成线程将图层分成图块,并在栅格化线程池中将图块转换成位图

  • 合成线程发送绘制图块命令DrawQuad给浏览器进程

  • 浏览器进程根据DrawQuad生成页面,显示在显示器上

====》时间紧,先到这,待补充

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值