热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:21种优化CSS和加快网站速度的方法,看看你知道几种?

本文由编程笔记#小编为大家整理,主要介绍了21种优化CSS和加快网站速度的方法,看看你知道几种?相关的知识,希望对你有一定的参考价值。
本文由编程笔记#小编为大家整理,主要介绍了21种优化CSS和加快网站速度的方法,看看你知道几种?相关的知识,希望对你有一定的参考价值。






来源 | https://github.com/qq449245884/xiaozhi/issues/28



CSS 必须通过一个相对复杂的管道,就像 htmlJavascript一样,浏览器必须从服务器下载文件,然后进行解析并将其应用于DOM。
由于优化程度极高,这个过程通常非常快——对于不基于框架的小型 web 项目,CSS通常只占总资源消耗的一小部分。




框架打破了这种平衡。
包括一个 Javascript GUI 堆栈,如 jQuery UI,可以观察 CSS, JS 和 HTML大小逐渐的变大。
通常,开发人员最后才会感到压力,当他们用一个强大的 8 核工作站后面,使用 T3 internet 时,没有人关心速度,这随着延迟或 cpu 受限设备的出现而改变。


优化CSS需要一个多维的方法。
虽然手工编写的代码可以使用各种技术进行简化,但是手工检查框架代码是低效的。
在这些情况下,使用自动化的简化会产生更好的结果。


下面的步骤将带我们进入 CSS 优化的世界。
并不是每一个都可以直接应用到你的项目中,但是一定要记住它们。

01. 使用简写



21种优化CSS和加快网站速度的方法,看看你知道几种?




使用缩写语句,如下面所示的 
margin
 声明,可以从根本上减小 CSS 文件的大小。
在 google 上搜索 
CSS Shorthand
 可以找到许多其他的速记形式。

















p { margin-top: 1px;



margin-right: 2px;



margin-bottom: 3px;



    margin-left4px; }



p { margin: 1px 2px 3px 4px; }





02. 查找并删除未使用的 CSS



21种优化CSS和加快网站速度的方法,看看你知道几种?


删除不必要的部分 CSS,j显然会加快网页的加载速度。
谷歌的Chrome浏览器有这种开箱即用的功能。
只需转到查看>开发人员>开发人员工具,并在最近的版本中打开Sources选项卡,然后打开命令菜单。
然后,选择Show Coverage,在Coverage analysis窗口中高亮显示当前页面上未使用的代码,让您大开眼界。


打开谷歌浏览器开发都工具,在 
Conlse
 旁边更多选择 
Coverage
,就可以看到未使用的 CSS, 点击对应的项,高亮显示当前页面上未使用的代码,让你大开眼界:


21种优化CSS和加快网站速度的方法,看看你知道几种?

03. 以更便捷的方式做到这一点



21种优化CSS和加快网站速度的方法,看看你知道几种?


在逐行分析中导航并不一定便捷,使用谷歌浏览器的 Audits 就可以快速帮我们分析,使用方式,打开开发者工具,点击 
Audits
 栏位,点击 Run audits 后就开始分析结果。

04. 注意这些问题



请记住,对 CSS 的自动分析总是会导致错误。
用压缩后的 CSS 文件替换 未压缩CSS文件之后,对整个网站进行彻底的测试——没有人知道优化器会导致什么错误。

05.内联关键 CSS



加载外部样式表需要花费时间,这是由于延迟造成的——因此,可以把最关键的代码位放在 
head
 中。
但是,请确保不要做得过火,记住,执行维护任务的人员也必须读取代码。






















<html>



<head>



<style>



.blue{color:blue;}



style>



head>



<body>



<div class="blue">



Hello, world!



div>





06.允许反并行解析



@import
 将 CSS 样式方便添加代码中。
遗憾的是,这些好处并不是没有代价的:由于 
@import
 可以嵌套,因此无法并行解析它们。
更并行的方法是使用一系列 标记,浏览器可以立即获取这些标记。


















@import url("a.css");



@import url("b.css");



@import url("c.css");



"stylesheet" href="a.css">



"stylesheet" href="b.css">



"stylesheet" href="c.css">





07. 用 CSS 替换图片



几年前,一套半透明的 png 在网站上创建半透明效果是司空见惯的。
现在,CSS过 滤器提供了一种节省资源的替代方法。
例如,以下这个代码片段可以确保所讨论的图片显示为其自身的灰度版本。

















img {



-webkit-filter: grayscale(100%);



/* old safari */



filter: grayscale(100%);



}





08.使用颜色快捷方式



常识告诉我们,六位数的颜色描述符是表达颜色最有效的方式。
事实并非如此——在某些情况下,速记描述或颜色名称可以更短。














target { background-color: #ffffff; }



target { background: #fff; }





09. 删除不必要的零和单位



CSS 支持多种单位和数字格式。
它们是一个值得感谢的优化目标——可以删除尾随和跟随的零,如下面的代码片段所示。
此外,请记住,零始终是零,添加维度不会为包含的信息附带价值。


















padding: 0.2em;



margin: 20.0em;



avalue: 0px;



padding: .2em;



margin: 20em;



avalue: 0;





10. 消除过多分号



这种优化需要谨慎,因为它会影响代码的更改。
CSS的规范允许省略属性组中的最后一个分号。
由于这种优化方法所节省的成本很小,所以我们主要针对那些正在开发自动优化的程序员说明这一点。
















p {



. . .



font-size: 1.33em



}





11.使用纹理图集



由于协议开销的原因,加载多个小图片的效率很低。
CSS 精灵将一系列小图片组合成一个大的PNG 文件,然后通过 CSS 规则将其分解。
[TexturePacker][7] 等程序大大简化了创建过程。























.download {



width:80px;



height:31px;



background-position: -160px -160px



}








.download:hover {



width:80px;



height:32px;



background-position: -80px -160px



}





12. 省略 px



提高性能的一个简单方法是使用CSS标准的一个特性。
为 0 的数值默认单位是 
px
—— 删除 
px
 可以为每个数字节省两个字节。














h2 {padding:0pxmargin:0px;}



h2 {padding:0; margin:0}





13. 避免需要性能要求的属性



分析表明,一些标签比其他标签更昂贵。
以下这些解析会影响性能—如果在没有必要的情况,尽量不要使用它们。


border-radius


box-shadow


transform


filter


:nth-child


position: fixed;

14. 删除空格



空格——考虑制表符、回车符和空格——使代码更容易阅读,但从解析器的角度看,它没有什么用处。
在发布前删除它们,更好的方法是将此任务委托给 shell 脚本或类似的工具。

15. 删除注释



注释对编译器也没有任何作用。
创建一个自定义解析器,以便在发布之前删除它们。
这不仅节省了带宽,而且还确保攻击者和克隆者更难理解手头代码背后的思想。


16. 使用自动压缩




Yahoo 的用户体验团队创建了一个处理许多压缩任务的应用程序。
它以 JAR 文件的形式发布,在这里可用,并且可以使用所选的JVM运行。




















java -jar yuicompressor-x.y.z.jar



Usage: java -jar yuicompressor-x.y.z.jar



[options] [input file]



Global Options



-h, --help Displays this



information



--type Specifies the



type of the input file






17. 在 NPM 运行它




如果你希望将产品集成到 Node.JS 中,请访问 [npmjs.com/package/yuicompressor][8]。
维护不良的存储库包含一组包装器文件和Javascript API。


















var compressor = require('yuicompressor');



compressor.compress('/path/to/



file or String of JS', {



//Compressor Options:



charset: 'utf8',



type: 'js',





18. 保持 Sass 的检查



虽然 CSS 选择器的性能不像几年前那么重要(请参阅参考资料),但是像 Sass 这样的框架有时会产生非常复杂的代,不时查看输出文件,并考虑优化结果的方法。

19. 设置缓存



有句老话说,最快的文件永远不会通过网络发送。
让浏览器缓存请求有效地实现这一点。
遗憾的是,缓存头的设置必须在服务器上进行。
充分上面讲的的两个 Chrome 工具,它们提供了一种快速分析更改结果的方法。

20. 打破缓存



设计人员通常不喜欢缓存,因为他们担心浏览器会缓存上次的样式表。
解决这个问题的一个简单方法是包含带有文件名的标记。
遗憾的是,由于一些代理拒绝缓存具有“动态”路径的文件,此步骤所附带的代码中概述的方案并不适用于所有地方。













<Link rel="stylesheet" href="style.css?v=1.2.3">





21. 不要忘记基础知识



优化CSS只是游戏的一部分。
如果你的服务器不使用 HTTP/2 和 gzip 压缩,那么在数据传输期间会损失很多时间。
幸运的是,解决这两个问题通常很简单。
我们的示例显示了对常用Apache 服务器的一些调整。
如果您发现自己在一个不同的系统上,只需参考服务器文档即可。















pico /etc/httpd/conf/httpd.conf



AddOutputFilterByType DEFLATE text/html



AddOutputFilterByType DEFLATE text/css











推荐阅读
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • 服务器上的操作系统有哪些,如何选择适合的操作系统?
    本文介绍了服务器上常见的操作系统,包括系统盘镜像、数据盘镜像和整机镜像的数量。同时,还介绍了共享镜像的限制和使用方法。此外,还提供了关于华为云服务的帮助中心,其中包括产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题和视频帮助等技术文档。对于裸金属服务器的远程登录,本文介绍了使用密钥对登录的方法,并提供了部分操作系统配置示例。最后,还提到了SUSE云耀云服务器的特点和快速搭建方法。 ... [详细]
author-avatar
乐乐
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有