CSS简单性能优化

这里看书加上一些我自己的理解和感悟

一、减少HTTP请求

在写css样式表的的时候,控制样式表的数量很重要,因为每次向服务器请求都是需要时间的,从请求到成功显示页面需要这么几个过程,先是本地浏览器向服务器发送请求,再是服务器接收到请求并在数据库中找到相关文件并发送过来,发送到本地浏览器还需要经过下载和渲染两个过程,如果样式表link标签写的太多,频繁的发送接收肯定会影响页面显示效率,这还不包括用cookie或者请求头部花费的时间

顺便说一下我对link标签中属性的理解,html好比一个水杯,css好比要装到水杯里的水,当我要装水时,首先需要知道水跟水杯是什么关系,水杯是用来装水的,水是被水杯装的,好比rel=“stylesheet”,rel在这里是relationship(关系)的意思,再者需要知道水在哪里,这就是href的作用,href是HypertextReference(超文本引用)的意思,然后就是怎么装的问题了,type=“text/css”官方的解释是在浏览器加载css样式表时告诉浏览器正在加载样式表,好让浏览器更好的做出反应,也就是告诉浏览器如何装水(即如何加载样式表)

<link rel="stylesheet" href="css/style.css" type="text/css">

有时候我们在用IDE(编辑器)自动生成样式表时,会看到注释的@import,这是一个属于css的加载方式,可以在style标签中写,也可以在链接外部css样式表中写,但是它与link有许多区别,import兼容性不好,只能适用于IE5以上,同时最重要的是import要等html加载完才开始加载,可能会导致页面闪烁,就是刚开始显示html结构突然一闪到了彩色页面,import的使用也会影响页面的效率,当你在外联样式表使用@import的时候,会造成连环加载的情况,先加载一个css时又去加载另一个css

<style>
  @import url(css/style.css);
</style>

二、压缩和缓存内容

css的压缩效率很高,原因是css的属性和值很多都是重复的,css文件压缩后会减少70%~80%,同时不需要自己来压缩,多数Web服务器会自动压缩线上资源

还有就是缓存,清除缓存有这样一个方式,通过javascript的方式,动态加上link标签并在地址后面加上随机的数字,也可以通过HTTP首部请求告诉浏览器让浏览器将缓存保存较长的一段时间

<!-- 结构内容 -->
<script>
    //清除缓存的方法
    document.write(
    /*  <link rel='stylesheet' type='text/css' href='style.css?v=  和 '> 是两个字符串,同时 
    new Date()是个数字*/

" <link rel='stylesheet' type='text/css' href='style.css?v= " + new Date().getTime() +     " '> "
      );
</script>

三、渲染阻塞

有src属性的标签必须等资源下载完后才能继续加载html网页,也就是你在在写着数学作业,突然发现今天要交英语作业,必须停下来先写英语作业才能继续写数学作业,因此script外部引用就是有src的标签,必须要等javascript下载完,才能继续html和css解析,这就是所谓“渲染阻塞”

原来主流的方法是在html页面底部结束标签</body>之前加载javascript

  <!-- 页面内容 -->
  <script src = "scripts/script.js">
</body>

现在比较现代的做法是在head中使用script标签,并添加async(异步)defer(推迟,延期)属性

推荐使用defer属性,async属性会在脚本执行完毕后阻断html解析,而defer是在html解析完毕后再执行加载的脚本,还有就是这两个属性比较新兼容性较差,IE10和更早的版本不支持或不完全支持它们

<head>
  <!-- 异步加载,下载后立即执行>
  <script src = "scripts/script.js" async></script>
  <!-- 异步加载,但在html解析后执行>
  <script src = "scripts/script.js" defer></script>
</head>

参考文献

《精通CSS 高级Web标准解决方案》第三版

【英】安迪·巴德 【瑞典】埃米尔·比约克隆德 著

李松峰 译

中国工信出版集团 人民邮电出版社

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值