前端小知识点

95 阅读2分钟
1.forEach不可以通过break(抛错),return true/false 来中断循环, return只会让 return 语句之后的代码不执行,循环还会继续。


2.在css里面,padding-top,padding-bottom,margin-top,margin-bottom取值为百分比的时候,参照的是父元素的宽度。以此可以设置高度为0,宽度设置为100%, 设置 padding-bottom 为50%设置 宽高比 2:1。 --------2020.7.4----  

3.箭头函数没有自己的this,它的this是继承而来的,默认指向的是 <font color=red>**定义它时所处的对象**</font>,而不是执行时的对象。箭头函数中,this指向的固定化,并不是因为箭头函数内部有绑定this的机制,实际原因是箭头函数根本没有自己的this,导致内部的this就是外层代码块的this。 --------2020.7.6----

4.强制缓存过期问问题: 如果设置了某资源为强制缓存,则如果服务器上的该资源有了更改,依然要走缓存的逻辑,无法访问到最新的资源。解决方法:(1)设置cache-control: no-cache, 使用协商缓存 (2) 通过更新页面中引用的资源路径,让浏览器主动放弃缓存,加载新资源。例如在文件名称后面增加一个版本号,下次上线时更改版本号。缺点:当有多个静态缓存文件,只有一个文件更改时,却需要更新所有文件。想要解决这个问题:考虑到让url的修改与文件内容相关联即只有文件内容变化时,才会导致相应的url的变更,从而实现文件级别的精确缓存控制,例如使用文件的摘要作为文件名和引用的路径名。另一个问题是:如果静态资源和网页没有部署在同一台服务器,则会出现时间差,先部署网页和先部署静态资源都会有问题。解决方案: 

  • 配置超长时间的本地缓存 
  • 节省带宽,提高性能采用内容摘要作为缓存更新依据 
  • 精确的缓存控制静态资源CDN部署 
  • 优化网络请求更资源发布路径实现非覆盖式发布(临时保存旧的静态资源)

参考(https://www.zhihu.com/question/20790576/answer/32602154 )

--------2020.7.16----