3、重绘和回流
当衬着树中的一部分(或全部)因为元素的范围尺寸,构造,隐蔽等改变而须要从新构建。这就称为回流。比瘸琅绫擎的img文件加载完成后就会引起回流,每个页面至少须要一次回流,就是在页面第一次加载的时刻。
本地存储最原始的方法就是 cookie,cookie 是存放在本地浏览器的一段文本,数据以键值对的情势保存,可以设置过不时光。 然则 cookie 不合适大年夜量数据的存储,因为每请求一次页面,cookie 都邑发送给办事器,这使得 cookie 速度很慢并且效力也不高。是以cookie的大年夜小被限制为4k阁下(不合浏览器可能不合,分HOST),如下所示:
- Firefox和Safari许可cookie多达4097个字节,包含名(name)、值(value)和等号。
- Opera许可cookie多达4096个字节,包含:名(name)、值(value)和等号。
- Internet Explorer许可cookie多达4095个字节,包含:名(name)、值(value)和等号。
当衬着树中的一些元素须要更新属性,而这些属性只是影响元素的外不雅,风格,而不会影响构造的,比如background-color。则就叫称为重绘。
会引起重绘和回流的操作
- 添加、删除元素(回流+重绘)
- 隐蔽元素,display:none(回流+重绘),visibility:hidden(只重绘,不回流)
- 移动元素,比如改变top,left,transform的值,或者移动元素到别的一个父元素中。(重绘+回流)
- 对style的操作(对不合的属性操作,影响不一样)
- 还有一种是用户的操作,比如改变浏览器大年夜小,改变浏览器的字体大年夜小等(回流+重绘)
4、本地存储
在所有浏览器中,任何cookie大年夜小跨越限制都被忽视,且永远不会被设置。
html5供给了两种在客户端存储数据的新办法:localStorage 和 sessionStorage, 它们都是以key/value 的情势来存储数据,前者是永远存储,后者的存储刻日仅限于浏览器会话(session),即当浏览器窗口封闭后,sessionStorage中的数据被清除。
localStorage的存储空间大年夜约5M阁下(不合浏览器可能不合,分 HOST),这个相当于一个5M大年夜小的前端页面的数据库,比拟于cookie可以节约带宽,但localStorage在浏览器隐私模式下是弗成攫取的,当存储数据跨越了localStorage的存储空间后会抛出异常。
此外,H5还供给了逆天的websql和indexedDB,许可前端以关系型数据库的方法来存储本地数据,相对来说,这个功能今朝应用的场景比较少,此处不作介绍。
5、浏览器缓存机制
浏览器缓存机制是指经由过程 HTTP 协定头里的 Cache-Control(或 Expires)和 Last-Modified(或 Etag)等字段来控制文件缓存的机制。
Cache-Control 平日与 Last-Modified 一路应用。一个用于控制缓存有效时光,一个在缓存掉效后,向办事萌芽是否有更新。
Cache-Control 用于控制文件在本地缓存有效时长。最常见的,比如办事器回包:Cache-Control:max-age=600 表示文件在本地应当缓存,且有效时长是600秒(大年夜发出请求算起)。在接下来600秒内,如不雅有请求这个资本,浏览器不会发出 HTTP 请求,而是直接应用本地缓存的文件。
Last-Modified 是标识文件在办事器上的最新更新时光。下次请求时,如不雅文件缓存过时,浏览器经由过程 If-Modified-Since 字段带上这个时光,发送给办事器,由办事器比较时光戳来断定文件是否有修改。如不雅没有修改,办事器返回304告诉浏览器持续应用缓存;如不雅有修改,则返回200,同时返回最新的文件。
Cache-Control 还有一个同功能的字段:Expires。Expires 的值一个绝对的时光点,如:Expires: Thu, 10 Nov 2015 08:45:11 GMT,表示在这个时光点之前,缓存都是有效的。
Expires 是 HTTP1.0 标准中的字段,Cache-Control 是 HTTP1.1 标准中新加的字段,功能一样,都是控制缓存的有效时光。当这两个字段同时出现时,Cache-Control 是高优化级的。
盒子模型是css最重要的一个概念,也是css构造的基石。 常见的盒子模型有块级盒子(block)和行内盒子(inline-block),盒子最关键的几个属性包含margin、border、padding和content,这几个元素可以设置盒子和盒子之间的关系以及盒子和内容之间的关系。还有一个问题是计算盒子的大年夜小,须要留意的是,box-sizing属性的设置会影响盒子的width和height。只有通俗文档流中块框的垂直外边距才会产生外边距归并。行内框、浮动框或绝对定位之间的外边距不会归并。
Etag 也是和 Last-Modified 一样,对文件进行标识的字段。不合的是,Etag 的取值是一个对文件进行标识的特点字串。在向办事器萌芽文件是否有更新时,浏览器经由过程 If-None-Match 字段把特点字串发送给办事器,由办事器和文件最新特点字串进行匹配,来断定文件是否有更新。没有更新回包304,有更新回包200。Etag 和 Last-Modified 可根据需求应用一个或两个同时应用。两个同时应用时,只要知足基一一个前提,就认为文件没有更新。
别的有两种特别的情况:
- 手动刷新页面(F5),浏览器会直接认为缓存已经由时(可能缓存还没有过时),在请求中加上字段:Cache-Control:max-age=0,发包向办事器萌芽是否有文件是否有更新。
- 强迫刷新页面(Ctrl+F5),浏览器会直接忽视本地的缓存(有缓存也会认为本地没有缓存),在请求中加上字段:Cache-Control:no-cache(或 Pragma:no-cache),发包向办事从新拉取文件。
推荐阅读
编辑器和IDE之间的本质差别在于:IDE不只可声调试,并且可以对代码进行概要分析,IDE还支撑应用法度榜样的生命周期治理(ALM)体系。我们在这里评论辩论典范多编辑器至少支撑一个版本控制体>>>详细阅读
本文标题:Web前端知识体系精简
地址:http://www.17bianji.com/lsqh/35870.html
1/2 1