简介

优化是一个持续的过程。所以尽可能的不要有人为的参与。所以能自动化的或者能从架构、框架级别解决的就最更高级别解决。

这样即能实现面对开发人员是透明的、不响应,又能确保所有资源都是被优化过的。

场景

  1. 确保静态资源是有缓存。
  2. 确保静态资源的大小最小。
  3. 确保加载的资源最少。
  4. 确保用户以最短的时间看到页面
  5. 减少人为因素的性能瓶颈。

解决方案

缓存

让资源更可能快的让用户看到。

结合代理(nginx)来实现。给http添加缓存的时长。

# 需要缓存的静态资源类型
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css|ico)$ {
....
if (-f $request_filename) {
expires 1d;
break;
}
}

说明:

html文件的缓存,要根据具体业务来判断。因为有些是真实的Html文件。有些是伪静态,并没有真的html文件

也可以通过cdn来缓存。

压缩

通过自动化压缩的工具来实现,尽量不要有人为的参与。这样即能对开发是透明的,不增加复杂度,也能防止因为人为的因素的遗忘。

建议:glup的插件(jsmin,cssmin,imgmin)

按需加载

图片加载延迟

所谓图片延迟加载,就是每次只加载当前屏幕可见区域的图片,其余的图片在用户滚动页面到该位置后才开始加载。这是一项非常实用的技术,减少了并发数,不但减少了服务器的压力,也降低了页面的加载时间,目前很多门户网站都使用了该技术,如腾讯微博的“看看推荐的人”页面,在该页面上有几千个头像,如果一次性加载全部的图片,就要耗费比较多的客户端和服务器端的资源。该功能的实现原理很简单,就是将页面上的src替换成其他标记(如original),在页面滚动到相应位置后,再将original更改为src。目前有个Jquery插件Jquery.LazyLoad.js可以实现图片的延迟加载,而且这个方法也能减少请求数

异步加载

首屏为行,重要信息为先,次要信息异步加载。

减少不必要的传输

动静域名分离。不传输cookie。有很多业务相关的cookie会通过http传输。比如登录后的token等。

减少请求数

网络请求是很费时。即增加了服务器压力,也影响用户使用的性能。

一般思路是通过合并来实现。

  1. 合并请求。结合代理(nginx)的模块(concat)来实现。
  2. 合并资源。雪碧图。这个也可以通过glup插件来实现。

加快渲染

image属性设置

有时需要在页面加载完之前,就对页面布局进行定位。

若页面中的图片没指定尺寸,或尺寸与实际图片大小不符,浏览器会在图片下载完成后再"回溯"该图片并重新显示,从而浪费时间。

# 页面的请求过程
... 12. 渲染树一旦有结构模型了,接着就会同步去计算渲染树节点的布局位置
13. 一旦计算出来渲染的坐标后,又同步去开始渲染
14. 10-13步进行过程中如果遇到图片则跳过去渲染下面内容,等待图片下载成功后会返回来在渲染 ...

所以,如果image如果没有widthheight的话,会影响性能。

js位置

js的加载方式是阻塞式的。放在最后,等页面都渲染完了再加载。

减少嵌套层级

嵌套越深,document的构建越慢。

高性能的规范

比如说:

  1. 避免CSS表达式
  2. 避免过大的cssName
  3. 避免频繁的DOM操作等。

    ...

也可以把上面的一些对性能有响应加到规范里,比如img标签必须有width和height,不允许css import,嵌套不允许超过3级等等。具体还是要看前端的规范。最好能有一些自动检验规范的工具。比如csshint,或者自己写一些小工具等。

验证方法

  1. 谷歌浏览器的开发者工具(控制台)
  2. pagespeed
  3. yslow
  4. https://varvy.com/tools/css-delivery/
  5. Chrome Task Manager。能查看内存泄漏

参考资源

  1. 网站性能优化工具大全
  2. web前端性能分析--原理篇
  3. Web性能优化分析
  4. Web前端,高性能优化
  5. Web前端优化最佳实践及工具集锦

web性能优化——浏览器相关的更多相关文章

  1. web性能优化-浏览器渲染原理

    在web性能优化-浏览器工作原理中讲到,浏览器渲染是在renderer process中完成的. 那我们来看下renderer process究竟干了什么? Renderer Process包含的线程 ...

  2. web性能优化-浏览器工作原理

    要彻底了解web性能优化的问题,得搞清楚浏览器的工作原理. 我们需要了解,你在浏览器地址栏中输入url到页面展示的短短几秒中,浏览器究竟做了什么,才能了解到为什么我们口中所说的优化方案能够起到优化作用 ...

  3. Web性能优化系列

    web性能优化之重要,这里并不打算赘述.本系列课程将带领大家认识.熟悉.深刻体会并且懂得如果去为不同的站点做性能优化 同时,本系列将还会穿插浏览器兼容性相关问题的解决方案,因为在我看来,兼容性同样属于 ...

  4. web性能优化之--合理使用http缓存和localStorage做资源缓存

    一.前言 开始先扯点别的: 估计很多前端er的同学应该遇到过:在旧项目中添加新的功能模块.或者修改一些静态文件时候,当代码部署到线上之后,需求方验收OK,此时你送了一口气,当你准备开始得意于自己的ma ...

  5. Web 性能优化:Preload与Prefetch的使用及在 Chrome 中的优先级

    摘要: 理解Preload与Prefetch. 原文:Web 性能优化:Preload,Prefetch的使用及在 Chrome 中的优先级 作者:前端小智 Fundebug经授权转载,版权归原作者所 ...

  6. web前端除了关注代码功能实现,还应具备web性能优化以及SEO优化的常识

    web前端除了关注代码功能实现,还应具备web性能优化以及SEO优化的常识 ——不会WPO.SEO的前端工程师不是好码农 作为一名web前端工程师,除了要实现上级的要求,满足其所需要的功能,还要在平时 ...

  7. Web性能优化之瘦身秘笈

    Web 传输的内容当然是越少越好,最近一段时间的工作一直致力于 Web 性能优化,这是我近期使用过的一些缩减 Web 体积的手段 这些手段主要是为了减少 Web 传输的内容大小,只有干货 CSS 删除 ...

  8. 关于WEB 性能优化 (摘抄)

    压缩源代码和图片 JavaScript文件源代码可以采用混淆压缩的方式,CSS文件源代码进行普通压缩,JPG图片可以根据具体质量来压缩为50%到70%,PNG可以使用一些开源压缩软件来压缩,比如24色 ...

  9. Web性能优化-合并js与css,减少请求

    Web性能优化已经是老生常谈的话题了, 不过笔者也一直没放在心上,主要的原因还是项目的用户量以及页面中的js,css文件就那几个,感觉没什么优化的.人总要进步的嘛,最近在被angularjs吸引着,也 ...

随机推荐

  1. Linux下Awk详解(转载)

    什么是Awk Awk是一种小巧的编程语言及命令行工具.(其名称得自于它的创始人Alfred Aho.Peter Weinberger 和 Brian Kernighan姓氏的首个字母).它非常适合服务 ...

  2. ES6函数剩余参数(Rest Parameters)

    我们知道JS函数内部有个arguments对象,可以拿到全部实参.现在ES6给我们带来了一个新的对象,可以拿到除开始参数外的参数,即剩余参数(废话好多 O(∩_∩)O~). 这个新的对象和argume ...

  3. Configure Ocserv on CentOS 6

    Configure Ocserv on CentOS 6 Table of Contents 1. Install ocserv 2. Configure ocserv 3. How to host ...

  4. 使用redis进行消息推送

    Redis支持这样一种特性,你可以将数据推到某个信息管道中,然后其它客户端可以通过订阅这些管道来获取推送过来的信息.使用Redis的Pub/Sub,接收方在某个channel注册为一个订阅者,然后监听 ...

  5. [转载]利用@media screen实现网页布局的自适应,@media screen and

    开始研究响应式web设计,CSS3 Media Queries是入门.Media Queries,其作用就是允许添加表达式用以确定媒体的环境情况,以此来应用不同的样式表.换句话说,其允许我们在不改变内 ...

  6. python paramiko

    paramiko 遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接,可以实现远程文件的上传,下载或通过ssh远程执行命令. 项目地址:https://github.com/paramik ...

  7. Java基础-super关键字与this关键字

    用super调用父类构造方法 类如果没有显式声明构造方法,则自动生成无参数的默认构造方法. 1.先用一个无参数的父类构造方法验证一下, 执行子类构造方法会自动调用父类的构造方法.测试代码: class ...

  8. No resource found that matches the given name 'Theme.AppCompat.Light 的完美解决方案

    No resource found that matches the given name 'Theme.AppCompat.Light 的完美解决方案 首先这个问题的产生是由于缺少Theme.App ...

  9. DPM检测模型 VoC-release 5 linux 下编译运行

    (转载请注明作者和出处 楼燚(yì)航的blog :http://www.cnblogs.com/louyihang-loves-baiyan/ 未经允许请勿用于商业用途) DPM目前使非神经网络方法 ...

  10. AC日记——接龙游戏 codevs 1051

    1051 接龙游戏  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description 给出了N个单词,已经按长度排好了序.如果 ...