1.前端

1.1.减少http请求次数:

1.1.1先了解下HTTP对性能的影响,HTTP是浏览器和服务器通过Interet进行相互通信的协议。HTTP是一种客服端/服务器协议,有请求和响应构成。 浏览器向一个特定的URL发送HTTP请求,URL对应的宿主服务器发回HTTP响应。

1.1.2css Sprites将多幅图片合并为单独一张图片,如果需要在页面中为背景、按钮、导航栏、链接等提供大量图片,css Sprites绝对是一种优秀的解决
 方案--干净的标签、很少的图片和很短的时间。

1.1.3我们都很熟悉包含HTTP:模式的URL。其它类式的模式包括ftp:、file:、和mailto:。但除此之外还有很多模式,如smtp:、pop:、dns:、whois:、daytime:、news:和 urn:。这其中一些是官方注册,还有一些被广泛关注而被接受。

data:URL模式在1995年被首次提议,规范(http://tools.ietf.org/html/rfc2397)对他的描述为:“允许将小块数据内联为:‘立即(immediate)’数“。数据就在其URL自身之 中,其格式如下:
 data:[<mediatype>][;base64],<data>
     一张内联图片我们可以定义为:
<imgsrc="data:image/png;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgN DRgy IRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjTjbmm5NGaBjv4aP4qb/Ok+lUA80nI5pMndRzt+tSA6m0UVQDvp+VN9qKP+A1>
 我们见过的data:都是用于内联图片的,但它可以用在任何需要指定的地方,包括SCRIPT和A标签。
 由于data:URL是内联在页面中的,在跨越不同页面是不会被缓存。不要去内联公司Logo,因为编码过的Logo会导致页面变大。
 合并脚本和样式表会缩短最终用户响应时间的。使用了合并脚本的页面在加载时块了38%。合并样式表可以带来类似的性能改进。
 http缓存http1.0的缓存是:Expires:缓存时间。http1.1的是:Cache-Control:max-age=缓存时间 no-cache 无缓存。

1.2代码位置优化
 为了加快css加载速度我们一般把css放在顶部,将样式表含在文档中有两种方式:使用liik和@import规则。使用link放是如下:
     <link  rel:"stylesheet" href="css.css">
 下面是使用带有@import的样式:
  <style>
  @import url("css.css")
  </style>
 对响应时间影响最大的是页面中组件的数量。当缓存空间为空时,每个组件都会产生一个http请求,有时即便缓存是完整的亦是如此。对此的解释要回到http1.1的规范,该规范建议  浏览器从每个主机名并行在下载两个组件。很多web页面需要从一个主机下载所有的组件。放置脚本的最好地方是页面的底部。这不会阻止页面内容的呈现,而且页面中的可视组件可  以尽早下载。

1.3避免使用css表达式
 css表达式是动态设置css属性的一种强大(并且危险)的方式。他受到Interet Explorer版本5和之后版本的支持。我们从一个传统的背景色开始:
 background—color:#000;
 对于很多动态页面,可以使用css表达式将背景色设置为每小时变化一次
 background—color:expression((new Date().getHours()%2?“#000”:“#fff”);
 有些规则用于处理页面加载之后的性能问题,这通常是由css表达式引起的问题,然而,有的时候,css表达式也会影响页面的加载时间。

1.4尽量外部样式表和外部js
 在对内联和使用外部文件对比分析时,关键点在于HTML文档请求数量相关的、外部javascrip和css组件被缓存的频率。

1.5如果CSS可以做到,就不要使用JS
 让CSS做更多的事,减轻JS开发量。
        用CSS控制交互或视觉的变化,JS只需要更改className。
        利用CSS一次性更改多个节点样式,避免多次渲染,提高渲染效率。
        如果你的产品允许不兼容低版本浏览器,那么动画实现可以交给CSS.

1.6css压缩
 CSS压缩并不是什么高端的姿势,但却很有用,其原理很简单,就是把我们CSS中没用的空白符等删去,达到缩减字符个数的目的我们有这样一段CSS脚本
       .test{
        background-color:#ffffff;
        background-image:url(a.jpg);
        }
 经过压缩后会变成这样
        .test{ background-color:#fff;  background-image:url(a.jpg)}
 当然高级些的压缩工具也会帮我们优化一些语法,提供很多选项,让我们的压缩更有控制,之前在的公司不采用CSS压缩,所以我没有什么实践经验,自己写东西常用的是YUI   Compressor,有很多在线版的很方便

1.7利用继承
 CSS的继承机制也可以帮我们再一定程度上缩减字节数,我们知道CSS有很多属性是可以继承的即在父容器设置了默写属性,子容器会默认也使用这些属性,因此如果我们希望全文字  体尺寸是14px,大可不必为每个容器设置,只需要在body上设置就可以了。应用这个技巧,把CSS属性在可能的情况下提到父容器是可以帮我们节省CSS字节的,顺便说一下哪些属性  可以继承

所有元素可继承:visibility和cursor
 内联元素和块元素可继承:letter-spacing、word-spacing、white-space、line-height、color、font、 font-family、font-size、font-style、font-variant、font-weight、  text- decoration、text-transform、direction
 块状元素可继承:text-indent和text-align
 列表元素可继承:list-style、list-style-type、list-style-position、list-style-image
 表格元素可继承:border-collapse
 不可继承的:display、margin、border、padding、background、height、min-height、max- height、width、min-width、max-width、overflow、position、left、right、top、   bottom、z-index、float、clear、table-layout、vertical-align、page-break-after、 page-bread-before和unicode-bidi

1.8 避免层级过度限制的css
 估计web开发的同学都看过MDN上Writing efficient CSS或者其各种翻译版本,文中总结了几点在书写CSS selector的意见,搞明白文中建议的一个前提是得知道CSS是从右到左解析 的,而不是我们认为的从左到右,关于为什么这样做肯定是因为高效,不明就里的同学可以上网搜一下相关知识。

不要用标签或 class 来限制 ID 规则
 这个应该是个常识,但很多同学都会误用,写出#test.info或者div#test这样的选择器,这个只能说是画蛇添足,id已经可以唯一而且最快的定位一个元素了

不要用标签名限制 class 规则
  这个估计被误用的更多,如div.info这样的写法,其实我们可以直接写为.info,从右到左解析的原因可以知道为什么其低效,如果直接使用class不能达到目的,一般情况下应该是 class设计的有问题,CSS需要重构了

尽量使用最具体的类别、避免后代选择器、属于标签类别的规则永远不要包含子选择器
 这三条规则是想通的,因为从左到右解析关系,在CSS选择器中后代选择器非但没有帮我们加快CSS查找,反而后代选择器是 CSS 中耗费最昂贵的选择器。 它的耗费是极其昂贵的— 特别是当选择器在标签或通用类别中,作者给的建议是当使用子选择器时要十分谨慎,能免则免。其开销可见一斑了。

对此我们可以通过具体类别——使用单一或尽量少的class解决。

css性能优化的更多相关文章

  1. 第二次讨论——响应式设计、布局技巧、css性能优化、css预处理

    第二次讨论 [响应式设计] 集中创建页面的图片排版大小,可以智能地根据用户行为以及使用的设备环境(系统平台.屏幕尺寸.屏幕定向等)进行相对应的布局. 响应式布局: meta标签的实用:设置布局宽度等于 ...

  2. CSS性能优化的8个技巧

    本文作者:高峰,360奇舞团前端工程师,W3C性能工作组成员,同时参与WOT工作组的学习. 我们都知道对于网站来说,性能至关重要,CSS作为页面渲染和内容展现的重要环节,影响着用户对整个网站的第一体验 ...

  3. CSS性能优化探讨

    大部分前端开发人员都不关心CSS性能优化,其实对于一个复杂的页面来说,高效的选择器还是可以带来一定的性能提升的. 1. CSS 选择器 浏览器是“从右往左”来分析 class 的,它的匹配规则是从右向 ...

  4. 页面中的CSS性能优化

    大型网站中会有多个CSS文件,性能优化是不要的.主要有以下几个方法: 一:压缩样式表: 通过构建工具压缩CSS文件,能够减少文件的大小,从而得到更快的下载.解析和执行.对于使用预处理器例如 Sass, ...

  5. CSS性能优化的几个技巧

    前言 随着互联网发展至今,对于网站来说,性能显的越来越重要了,CSS作为页面渲染和内容展现的重要环节,影响着用户对整个网站的第一体验.所以,我们需要重视与CSS相关的性能优化. 项目开发初期我们可能因 ...

  6. CSS性能优化新属性:will-change

    ---恢复内容开始--- will-change属性通过告诉浏览器什么属性.什么元素将会发生变化,可以对这些操作进行可能性的优化,由此提高CSS动画的执行效率. 这个属性可以有4个值: auto: 实 ...

  7. css 性能优化小结

    1.能用css不用js 1.鼠标悬浮展示              2.自定义radio.checkbox的样式 3.巧用css伪类 当input获取焦点时候,把右边的按钮改变样式 检测用户输入:如果 ...

  8. CSS性能分析,如何优化CSS提高性能

    不负十年后的自己,共勉! 前端性能优化一直是一个比较热门的话题,我们总是在尽我们最大的努力去,提高我们的页面性能,比如减少HTTP请求,利用工具对资源进行合并压缩,脚本置底,避免重复请求,css sp ...

  9. css,html性能优化

    css性能优化 CSS是负责布局和渲染的重要角色,漂亮的页面当然能够吸引用户.本文是自己在开发过程中总结的关于CSS与性能的关系,可能有不对之处,希望能够指出. ? 1.所有的样式尽量放在css文件中 ...

随机推荐

  1. Spark机器学习示例

    1. Java代码 /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor lice ...

  2. Xcode7免证书真机调试

    最近一直忙于项目,对于Xcode7的一些新功能还没去尝试,今天尝试了下挺好用的!避免了以前真机调试繁琐的配置,很是爽啊.又可以节约很多小伙伴的时间了.废话不多说咱们一起来配置一下. 第一步 打开需要真 ...

  3. php 图片验证码生成 前后台验证

    自己从前一段时间做了个php小项目,关于生成图片验证码生成和后台的验证,把自己用到的东西总结一下,希望大家在用到相关问题的时候可以有一定的参考性. 首先,php验证码生成. 代码如下: 1.生成图像代 ...

  4. 山锅(samgor)的博客 2014

    搞移动端的前端开发已经3年,悄悄地从一个前端小白变成老油条. 项目已经做了好几个,最近发现技术的提升貌似停滞不前.说很菜吧,知道的还是不少.说精通吧,自我感觉还算不上. 认真的考虑下这个问题,觉得技术 ...

  5. 【DIY】【外壳】木板 & 亚克力 加工

    —————————————————————————————————————————————————————————————————————— 一.途径 淘宝 https://item.taobao.c ...

  6. (BFS)poj3669-Meteor Shower

    题目地址 为判断某时刻能否走到某位置,建立shi数组,记录某位置最早t时刻就不能走.(初始化为-1)之后开始从(0,0)出发bfs,用bu数组记录走到某一位置时花费的步数,并且需要用vi数组记录是否走 ...

  7. (原创)如何使用selenium 驱动chrome浏览器并且打开方式为手机模式-转载请注明出处

    随着移动设备使用率的不断增加,移动页面的测试也变得越来越重要. 对于互联网公司M站的测试,如果不通过专用的appium等移动端测试工具是否还有方便快捷的办法呢?答案当然是有啊. 使用chrome dr ...

  8. 1、WIN2D学习记录(win2d实现JS雨天效果)

    一.Win2D Win2D是微软开源的项目 它的github地址是 https://github.com/Microsoft/Win2D 里面有详细的文档 http://microsoft.githu ...

  9. xcode6.0以上创建一个Empty Application

    运行Xcode 6,创建一个Single View Application工程.   创建好后,把工程目录下的Main.storyboard和LaunchScreen.xib删除,扔进废纸篓.   打 ...

  10. linux 内核学习之五 system_call过程分析

    一   使用gdb工具跟踪分析一个自添加的系统调用 应用程序的进程通常在用户空间下运行,当它调用一个系统调用时,进程进入内核空间,执行的是kernel内部的代码,从而具有执行特权指令的权限,完成特定的 ...