运行环境(页面加载、性能优化、安全性)

–浏览器可以通过访问链接来得到页面内容
–通过绘制和渲染,显示出页面最终样子
整个过程我们需要考虑

-页面加载
-性能优化
-安全性

页面加载

加载资源的形式
	-输入url(或页面跳转)加载html
	-加载html中静态资源(图片,视频,js,cdn,css...)
	
加载一个资源的过程
	-浏览器根据DNS服务器得到域名的IP地址
	-向这个IP的机器发送http(s)请求
	-服务器收到请求后处理并返回
	-浏览器拿到返回的内容进行渲染
	
浏览器渲染页面的过程
	-根据HTML结构生成DOM Tree
	-根据CSS生成CSSOM
	-将DOM和CSSOM整合生成RenderTree
	-根据RenderTree开始渲染和展示
	-遇到<script>时会执行并阻止渲染


window.onload和DOMContentLoaded
	-window.onload:页面全部资源加载完才会执行,包括图片、视频等
	-DOMContenLoaded:DOM渲染完即可执行,此时图片、视频可能还没有加载完

性能优化

从大方向原则来说
	-多使用内存、缓存等其他方法
	-减少CPU计算、减少网络

从哪里入手
	-加载页面和静态资源
		-静态资源的压缩合并
		-静态资源缓存
		-使用CDN让资源加载更快(CDN能找到就近的服务器去请求资源)
		-使用SSR后端渲染,数据直接加载到HTML中而不用去请求Ajax
		
	-页面渲染
		-CSS放前,JS放后面
		-懒加载(图片懒加载、下拉加载更多)
		-减少DOM查询,对DOM查询做缓存
		-减少DOM操作,多个操作尽量合并在一起执行
		-事件截流
		-尽早操作(如DOMContentLoaded)

-资源合并:
	如请求a.js、b.js、c.js合并请求abc.js (用构建工具)
-缓存
	通过链接名称控制缓存
-CDN
-SSR后端渲染(vue、React),其实jsp、php、asp都属于后端渲染
-懒加载
	如图片懒加载时,img的src放的是一个很小的图片(一次之后就缓存了),真正的地址在一		
	个自定义属性里面,当需要的时候img.src=img.getAttribute(自定义属性)
-缓存DOM查询
	
	未缓存
		for(let i = 0;i<document.getElementsByTagName('p').length;i++){
		}

	缓存
		let plist= document.getElementsByTagName('p')
		for(let i = 0;i<plist.length;i++){
		}

-合并DOM插入

在这里插入图片描述

-事件截流

在这里插入图片描述

-DOMContentLoaded

安全性

一般来说安全问题有专门人员做
前端安全问题头哪些??

	-XXS跨站请求攻击
		-如在某博客写文章时偷偷插入一段<script>,代码中获取cookie发送到自己的服务器,别人查看文章时,该脚本就会执行,浏览者的cookie会发送到攻击者的服务器
		-解决:
			·前端替换关键字,例如<替换为&lt; >替换为&gt;
			·后端替换
			
	-XSRF跨站请求伪造
		-已登陆某购物网站,付费接口是xx.com/pay?id=100,且没有任何验证,然后收到一个邮件,隐藏了一个<img src='xx.com/pay?id=100'>,那么你查看是就已经付费了
		-解决
			·增加验证流程(指纹,密码,短信验证码...)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值