1.浏览器的缓存机制
对于浏览器的缓存来讲,这些规则是在HTTP协议头和HTML页面的Meta标签中定义的。他们分别从新鲜度和校验值两个维度来规定浏览器是否可以直接使用缓存中的副本,还是需要去元服务器获得更新版本
新鲜度(过期机制):缓存副本的有效期。一个缓存副本满足以下条件,浏览器认为其有效。
1. 含有完整的过期时间控制控制头信息,并且仍在有效期内;
2.浏览器已经使用过这个缓存副本,并且在一个会话中已经检查过新鲜度
满足以上情况的一种,浏览器会直接从缓存中获取副本并渲染
校验值(验证机制):服务器返回资源的时候有时在控制头带上这个资源的实体标签Etag(Entiy tag),浏览器再次请求过程的校验标识,如果发现校验标识不匹配,说明资源已经被修改或过期
Cache-Control(max-age)与Expires作用一样,前者选择更多,设置更细致,优先级更高。属于强制缓存,不再访问服务器,有缓存立刻使用
Last-Modified与ETag,功能也差不多,属于对比缓存,是否使用都要先询问服务器。ETag的出现主要是为了解决以下问题:
1. Last-Modified标注的最后修改只精确到秒,如果在1秒内发生变化,不能精准描述
2.如果某些文件会被定期生成,当有时内容并没有任何变化,但Last-Modified却改变
3.有可能存在服务器没有精确获取文件修改时间
Etag是服务器自动生成或者有开发者生成的对应资源在服务器端的唯一标识符,当二者一起使用,优先验证ETag,一致情况下,才会继续比对Last-Modified
2. ES6,ES5
JavaScript由三部分组成:ECMAScript(核心),DOM,BOM
ES6特性:1.块级作用域 关键字let,常量const
2.对象字面量的属性赋值简写
3.赋值解构
等号两边模式相同,左边变量就会被赋予对应的值。
Babel是一个广泛使用的ES6转码器
3.let ,用来声明变量,只在自己所在代码块内有效。
let 不像 var 那样会发生“变量提升”现象,所以一定要在声明后使用
只要块级作用域内存在let命令,它所声明的变量就“绑定”这个区域,不再受外界影响
let不允许在相同作用域内,重复声明同一个变量
不能在函数内部重新声明参数
内层作用域可以定义外层作用域同名变量
允许在块级作用域声明函数
do表达式,会获得返回值
4. const 声明的变量不得改变值,且声明同时要赋值
与let相同,只在块级作用域内有效
5. ES6允许函数的参数设置默认值,即直接写在参数定义的后面
参数变量是默认声明的,不能用let或const再次声明
6. set数据结构,与数组类似,但不能有相同的元素
keys():返回键名的遍历器
values():返回键值的遍历器
entries():返回键值对的遍历器
forEach():使用回调函数遍历每个成员
7. redux
需要使用redux的情况:用户使用方式复杂;不同身份用户不同的使用方式;
多个用户之间协作;与服务器大量交互,或者使用了webSocket
view要从多个来源获取数据
基本概念和API:1.store 保存数据的地方,使用createStore来生成
2.state 得到某个时点的数据,store,getState()
3.Action 就是view发出的通知,表示state要发生改变了;由Action Creator 这个函数来生成
store.dispatch是view发出Action的唯一方法
8.promise等处理异步调用的方法
9. 移动端屏幕大小适配
10.如何捕捉错误
11.
为什么要学习前端,三年到五年职业规划