当前位置: 首页 > 科技观察

Web性能优化:21种优化CSS提速的方法

时间:2023-03-13 07:02:03 科技观察

这是Web性能优化的第四部分,上一篇在下面查看点击查看:Web性能优化:使用WebpackWeb分离数据的正确方法性能优化:图片优化减少网站大小62%Web性能优化:缓存React事件以提高性能CSS必须经过一个相对复杂的管道,就像HTML和JavaScript一样,浏览器必须从服务器下载文件,然后解析它和在DOM中应用它。由于优化程度高,这个过程通常非常快——对于不基于框架的小型Web项目,CSS通常只占总资源消耗的一小部分。框架打破了这种平衡。包括一个JavaScriptGUI堆栈,例如jQueryUI,以观察CSS、JS和HTML的大小增长。通常只有开发人员在强大的8核工作站后面使用T3互联网时才会感到压力,而且没有人关心速度,而且这种情况会随着延迟或受CPU限制的设备而改变。优化CSS需要多维方法。虽然可以使用各种技术简化手写代码,但手动检查框架代码效率低下。在这些情况下,使用自动简化会产生更好的结果。以下步骤将带我们进入CSS优化的世界。并非所有这些都可以直接应用于您的项目,但记住它们很重要。01.使用缩写使用缩写语句,如下所示的边距语句,可以从根本上减小CSS文件的大小。谷歌搜索CSSShorthand可以找到许多其他速记形式。p{margin-top:1px;margin-right:2px;margin-bottom:3px;margin-left:4px;}p{margin:1px2px3px4px;}02.查找并删除未使用的CSS删除不需要的CSS部分,j会明显加快网页的加载速度。Google的Chrome浏览器具有开箱即用的此功能。只需转到View>Developer>DeveloperTools,在最近的构建中打开Sources选项卡,然后打开命令菜单。然后,选择ShowCoverage,在Coverage分析窗口中高亮显示当前页面未使用的代码,会让你大开眼界。打开Goog??leChrome开发工具,选择Conlse旁边的Coverage,可以看到未使用的CSS,点击对应项,高亮显示当前页面未使用的代码,睁眼一看:03。更方便的做法是不在逐行分析中导航必然方便。在谷歌浏览器中使用Audits可以快速帮我们分析、使用方法,打开开发者工具,点击Audits栏目,点击Runaudits。开始分析结果。04.注意这些问题请记住,CSS的自动分析总是会导致错误。用压缩后的CSS文件替换未压缩的CSS文件后,彻底测试整个站点——没有人知道优化器会犯什么错误。05.内联关键CSS加载外部样式表所花费的时间是由于延迟——因此,将最关键的代码放在头部。但是,请确保不要过度,并记住执行维护任务的人员也必须阅读代码。你好,世界!

06.允许反并行解析@import可以很容易地在代码中添加CSS样式。不幸的是,这些好处不是没有代价的:由于@import可以嵌套,它们不能被并行解析。一种更并行的方法是使用一系列浏览器可以立即获取的标记。@importurl("a.css");@importurl("b.css");@importurl("c.css");07。用CSS替换图像几年前,一组半透明的png在网站上创建半透明效果是司空见惯的。CSS过滤器现在提供了一种资源高效的替代方案。例如,以下代码片段可确保所讨论的图像显示为自身的灰度版本。img{-webkit-filter:grayscale(100%);/*oldsafari*/filter:grayscale(100%);}08.使用颜色快捷方式常识告诉我们,六位颜色描述符是最有效的颜色表达方式.情况并非如此——在某些情况下,速记描述或颜色名称可能会更短。目标{背景颜色:#ffffff;}目标{背景:#fff;}09。删除不必要的零和单位CSS支持多种单位和数字格式。它们是一个值得感谢的优化目标-可以删除尾随零,如下面的代码片段所示。另外,请记住,零始终是零,添加维度不会为包含的信息增加价值。填充:0.2em;边距:20.0em;值:0px;填充:.2em;边距:20em;值:0;10。消除过多的分号这种优化需要谨慎,因为它会影响代码更改。CSS规范允许省略属性组中的尾随分号。由于这种优化方法节省的成本很小,我们主要为开发自动优化的程序员说明这一点。p{...font-size:1.33em}11.由于协议开销,使用纹理图集,加载多个小图像的效率很低。CSS精灵将一系列小图像组合成一个大的PNG文件,然后按CSS规则对其进行分解。TexturePacker等程序大大简化了创建过程。.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:0px;margin:0px;}h2{padding:0;margin:0}13.避免需要性能要求的属性分析表明,一些标签比其他标签更昂贵。以下解析可能会影响性能-如果不需要,请尽量不要使用它们。border-radiusbox-shadowtransformfilter:nth-childposition:fixed;14.删除空格空格——考虑到制表符、回车和空格——使代码更易于阅读,但从解析器的角度来看,它的用处不大。在发布之前删除它们,最好将此任务委托给shell脚本或类似脚本。15.删除注释注释对编译器也没有影响。创建自定义解析器以在发布前删除它们。这不仅可以节省带宽,还可以确保威胁行为者和克隆者更难理解手头代码背后的思想。16.使用自动压缩Yahoo 的UX团队创建了一个应用程序来处理许多压缩任务。它作为 JAR 文件分发,可在此处获取,并且可以与所选的JVM一起运行。java-jaryuicompressor-x.y.z.jarUsage:java-jaryuicompressor-x.y.z.jar[options][inputfile]GlobalOptions-h,--helpDisplaysthisinformation--type指定输入文件的类型17。如果您想将该产品集成到Node.JS中,请在NPM上运行它,请访问npmjs.com/package/yuicompressor。维护不善的存储库包含一组包装器文件和一个JavaScriptAPI。varcompressor=require('yuicompressor');compressor.compress('/path/to/fileorStringofJS',{//CompressorOptions:charset:'utf8',type:'js',18.尽管CSS选择器的性能不是,但保持Sass检查和几年前一样重要(请参阅参考资料),但是像Sass这样的框架有时会产生非常复杂的代码,时不时地查看输出文件,并考虑优化结果的方法。19.设置缓存有一句老话,最快的文件永远不会通过网络发送。让浏览器缓存请求来有效地做到这一点。不幸的是,缓存标头的设置必须在服务器上完成。上面提到的两个Chrome工具,它们提供a快速分析变化结果的方法20.打破缓存设计师一般不喜欢缓存,因为他们担心浏览器会缓存最后的样式表。解决这个问题的一个简单方法是在文件名中包含一个标签.对不起是的,因为一些代理拒绝缓存带有“dynam”的文件ic"路径,此步骤所附代码中概述的方案并不适用于所有地方。21。不要忘记基础知识优化CSS只是游戏的一部分。如果您的服务器不使用HTTP/2和gzip压缩,您将在数据传输过程中浪费大量时间。幸运的是,解决这两个问题通常很简单。我们的示例展示了对流行的Apache服务器的一些调整。如果您发现自己在不同的系统上,只需参阅服务器文档即可。pico/etc/httpd/conf/httpd.confAddOutputFilterByTypeDEFLATE文本/htmlAddOutputFilterByTypeDEFLATE文本/css