「这是我参与2022首次更文挑战的第7天,活动详情查看:2022首次更文挑战」
下面先来聊聊缓存
缓存分为两种:强缓存和协商缓存,根据响应的header
内容来决定
强缓存和协商缓存获取资源形式都是从缓存取
但,强缓存是不发送请求到服务器,直接从缓存取,状态码是200(from cache)
;
而协议缓存是发送请求到服务器,通过服务器来告知缓存是否可用,可用在从缓存取,状态码是304(not modified)
强缓存相关字段有 expires
,cache-control
。如果 cache-control
与expires
同时存在的话,cache-control
的优先级高于expires
协商缓存相关字段有Last-Modified/If-Modified-Since
,Etag/If-None-Match
下面在来聊聊动画
动画包括JS动画和css3动画,我们来聊聊他们之间的不同吧
渲染线程分为main thread
和compositor thread
,如果css
动画只改变 transform
和 opacity
,这时整个CSS
动画在compositor trhead
完成;而 JS 动画则会在 main thread
执行,然后出发compositor thread
进行下一步操作。特别注意的是如果改变transform
和opacity
是不会layout
或者paint
两者主要区别:
- 功能涵盖面,
JS
比CSS
大 - 实现难度不一,
CSS3
比JS
更加简单 - 对帧速表现不好的低版本浏览器,
css3
可以做到自然降级 css3
动画有天然事件支持css3
有兼容性问题
另外我们聊聊link标签和@import 标签
我们都知道,外部引入 CSS 有2种方式,link
标签和@import
link
标签和@import
的区别:
link
属于html
标签,而@import
是css
提供的;- 页面被加载时,
link
会同时被加载,而@import
引用的 css 会等到页面加载结束后加载; link
方式样式的权重高于@import
的;link
是html
标签,因此没有兼容性,而@import
只有IE5
以上才能识别。
比较建议使用link
标签,慎用@import
方式。
这样可以避免考虑@import
的语法规则和注意事项,避免产生资源文件下载顺序混乱和http请求过多的烦恼