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. SSH:Struts2.2+Hibernate3.6+Spring3.1分页示例[转]

    参考资料 1 ssh分页(多个例子) http://useryouyou.iteye.com/blog/593954 2 ssh2分页例子 http://459104018-qq-com.iteye. ...

  2. ubuntu下部署SVN

    sudo apt-get install subversion 创建库文件夹 sudo mkdir svn sudo chown -R 777 svn 设置为所有用户配置777权限 sudo chmo ...

  3. Python之路,Day9, 进程、线程、协程篇

    本节内容 操作系统发展史介绍 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者 ...

  4. bzoj 3172: [Tjoi2013]单词

    #include<cstdio> #include<cstring> #include<iostream> #define M 1000008 using name ...

  5. Dev 13.2 汉化教程(提供汉化cs文件下载)

    主要为了汉化 FindPanel里的Find和Clear控件名称,研究了一些时间. 废话不说.直接上干货. 1.已将cs文件分享,下载放到项目里. 下载链接: http://pan.baidu.com ...

  6. .NET C# 将 mdb 中数据读为 list<string[]> 其中 path 为数据库地址 ,sql 为查询语句

    using System.Data; using System.Data.OleDb; public static List<string[]> select_list(string pa ...

  7. 自定义javascript log方法

    /** * 类似chrome,firefox的console对象 * 但是在IE等不支持console的浏览器不会报错 * 理论上浏览器支持的console的方法都支持,比如谷歌的 * assert, ...

  8. 一个非常有意思的css3属性filter

    filter这属性貌似可以是img图片在黑白与彩色间转换 filter:grayscale(1)为黑白色,filter:grayscale(0)位彩色,可以用于hover效果 img:hover{fi ...

  9. 摆花(2012Noip普及组第3题)

    摆花 (flower.cpp/c/pas) [问题描述] 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共 m 盆.通过调查顾客的喜好,小明列出了顾客最喜欢的 n 种花,从 1 到 n ...

  10. mysql免安装版本

    [下载MySQL 5.6.13] 从MySQL官方网站mysql.com找到MySQL Community Server 5.6.13的下载地址为http://dev.mysql.com/downlo ...