web性能优化
常用方法
压缩源码和图片
JavaScript文件源代码:可以采用混淆压缩的方式,CSS文件源代码进行普通压缩,JPG图片可以根据具体质量来压缩为50%到70%,PNG可 以使用一些开源压缩软件来压缩,比如24色变成8色、去掉一些PNG格式信息等。
选择合适的图片格式:如果图片颜色数较多就使用JPG格式,如果图片颜色数较少就使用PNG格式,如果能够通过服务器端判断浏览器支持WebP,那么就使用WebP格式和 SVG格式。
合并静态资源
包括CSS、JavaScript和小图片,减少HTTP请求。
开启服务器端的Gzip压缩
这对文本资源非常有效,对图片资源则没那么大的压缩比率。
使用CDN 或者一些公开库使用第三方提供的静态资源地址
比如jQuery、normalize.css。一方面增加并发下载量,另一方面能够和其他网站共享缓存。
延长静态资源缓存时间
频繁访问网站的访客就能够更快地访问。不过,这里要通过修改文件名的方式,确保在资源更新的时候,用户会拉取到最新的内容。
CSS引用放在页面头部,JavaScript引用放在页面底部
这样就不会阻塞页面渲染,让页面出现长时间的空白。
前端工程师的性能优化
基本优化方法是:
- 尽量减少同一域下的HTTP请求数
- 以及尽量减少每一个资源的体积
浏览器常常限定了对同一域名发起的并发连接数的上限。E6/7和Firefox2的设计规则是,同时只能对一个域名发起两个并发连接。新版浏览器普遍上限设定为4至8个。
把静态资源放在非主域名下,这种做法除了可以增加浏览器并发,还有一个好处是,减少HTTP请求中携带的不必要的cookie数据。cookie是某些
网站为了辨别用户身份而储存在用户浏览器中的数据。cookie的作用域是整个域名,也就是说如果某个cookie存放在google.com域名下,那
么对于google.com域名下的所有HTTP请求头都会带上cookie数据。
如果Google把所有的资源都放在google.com下,那么所有资源的请求都会带上cookie数据。对于静态资源来说,这是毫无必要的,因为这对带宽和链接速度都造成了影响。
前端工程师经常做的优化是合并同一域名下的资源,比如把多个CSS合并为一个CSS,或者将图片组合为CSS贴图,还有一些优化建议是省掉不必要的
HTTP请求,比如内嵌小型CSS、内嵌小型JavaScript、设置缓存,以及减少重定向。这些做法虽然各不相同,但是如果了解HTTP请求的过程,
就知道这些优化方法的最终目的都是最大化利用有限的请求数。
一个基础题目是“常用的图片格式有哪些,它们的使用场景是什么”。对图片的敏感性反映出工程师对带宽和速度的不懈追求。比较大的文本资源,必须开启gzip压缩。
对于一个CSS资源的请求耗时(两个细节):
这个CSS资源请求的体积是36.4KB(这是gzip压缩过的体积),解压缩之后,CSS内容实际上是263KB,可以算出压缩后体积是原来的13.8%。
整个连接的建立花费了30%的时间,发出请求到等待收到第一个字节回复花费了20%的时间,下载CSS资源的内容花费了50%的时间。
后台工程师的性能优化
对于HTTP的关注在于让服务器尽快响应请求,以及减少请求对服务器的开销
1、提高服务器的请求处理能力:
Apache
通过模块化的设计来适应各种环境,其中一个模块叫做多处理模块(MPM),专门用来处理多请求的情况。Apache安装在不同系统上的时候会调用不同的默
认MPM,我们不用关心具体的细节,只需要了解Unix上默认的MPM是prefork。为了优化,我们可以改成worker模式。
prefork和worker模式的最大区别就是:prefork
的一个进程维持一个连接,而worker的一个线程维持一个连接。所以prefork更稳定但内存消耗也更大,worker没有那么稳定,因为很多连接的
线程共享一个进程,当一个线程崩溃的时候,整个进程和所有线程一起死掉。但是worker的内存使用要比prefork低得多,所以很适合用在高HTTP
请求的服务器上。
Apache和Nginx:
在高连接并发的情况
下,Nginx是Apache服务器不错的替代品或者补充:一方面是Nginx更加轻量级,占用更少的资源和内存;另一方面是Nginx
处理请求是异步非阻塞的,而Apache 则是阻塞型的,在高并发下Nginx
能保持低资源、低消耗和高性能。——由于Apache和Nginx各有所长,所以经常的搭配是Nginx处理前端并发,Apache处理后台请求。新秀
Node.js也是采用基于事件的异步非阻塞方式处理请求,所以在处理高并发请求上有天然的优势。
2、高性能网站的关键:缓存
在一个Web站点中,它的数据流从服务器端到浏览器端,哪些地方可以使用缓存来优化:
- 服务器缓存
- 数据库缓存
基本的数据库查询缓存——可以开启MySQL查询缓存来提高速度,并且减少系统压力
MySQL默认不开启查询缓存,但我们可以通过修改MySQL安 装目录中的my.ini来设置查询缓存。设置的时候可以根据实际情况配置缓冲区大小、单个查询的缓冲区大小等。
如果您希望优化MySQL服务器的查询性能 和速度,可以在MySQL配置中增加这两项:
- query_cache_size=SIZE SIZE是指为查询缓存开辟多大的空间。默认是0,也就是禁用查询缓存。
- query_cache_type=OPTION 设置查询缓存的类型,可选的值有以下这三种。
- 0:设置查询缓存的类型,可选的值有以下这三种。
- 1:所有的缓存结果都缓存起来,除非查询命令以SELECT S_NO_CACHE开始。
- 2:只缓存查询命令以SELECT SQL_CACHE开始的查询结果。
——问题是“缓存命中率不高”,所以配置缓存之后第一件事就是查询命中率,如果命中率低,不如不做缓存。数据库查询缓存的一个设计原则:其缓存失效设计是很粗糙的——保证实时性可牺牲命中率??
扩展数据库缓存:memcached
memcached应运而生,它是一个高性能分布式内存对象缓存系统,用于减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而
提高动态、数据库驱动网站的速度。memcached可以与数据库查询缓存配合使用。memcached的设计原则是:时间过期,即只有设定的时间到了才
去更新数据,提高了命中率,但有可能是”不新鲜的“。
web性能优化的更多相关文章
- 关于WEB 性能优化 (摘抄)
压缩源代码和图片 JavaScript文件源代码可以采用混淆压缩的方式,CSS文件源代码进行普通压缩,JPG图片可以根据具体质量来压缩为50%到70%,PNG可以使用一些开源压缩软件来压缩,比如24色 ...
- Web性能优化-合并js与css,减少请求
Web性能优化已经是老生常谈的话题了, 不过笔者也一直没放在心上,主要的原因还是项目的用户量以及页面中的js,css文件就那几个,感觉没什么优化的.人总要进步的嘛,最近在被angularjs吸引着,也 ...
- web性能优化——浏览器相关
简介 优化是一个持续的过程.所以尽可能的不要有人为的参与.所以能自动化的或者能从架构.框架级别解决的就最更高级别解决. 这样即能实现面对开发人员是透明的.不响应,又能确保所有资源都是被优化过的. 场景 ...
- Web性能优化系列
web性能优化之重要,这里并不打算赘述.本系列课程将带领大家认识.熟悉.深刻体会并且懂得如果去为不同的站点做性能优化 同时,本系列将还会穿插浏览器兼容性相关问题的解决方案,因为在我看来,兼容性同样属于 ...
- 移动web性能优化笔记
移动web性能优化 最近看了一些文章,对移动web性能优化方法,做一个简单笔记 笔记内容主要出自 移动H5前端性能优化指南和移动前端系列——移动页面性能优化
- web性能优化 来自《web全栈工程师的自我修养》
最近在看<web全栈工程师的自我修养>一书,作者是来自腾讯的前端工程师.作者在做招聘前端的时候问应聘者web新能优化有什么了解和经验,应聘者思索后回答“在发布项目之前压缩css和 Java ...
- web性能优化之--合理使用http缓存和localStorage做资源缓存
一.前言 开始先扯点别的: 估计很多前端er的同学应该遇到过:在旧项目中添加新的功能模块.或者修改一些静态文件时候,当代码部署到线上之后,需求方验收OK,此时你送了一口气,当你准备开始得意于自己的ma ...
- Web 性能优化:Preload与Prefetch的使用及在 Chrome 中的优先级
摘要: 理解Preload与Prefetch. 原文:Web 性能优化:Preload,Prefetch的使用及在 Chrome 中的优先级 作者:前端小智 Fundebug经授权转载,版权归原作者所 ...
- Web 性能优化:21 种优化 CSS 和加快网站速度的方法
这是 Web 性能优化的第 4 篇,上一篇在下面看点击查看: Web 性能优化:使用 Webpack 分离数据的正确方法 Web 性能优化:图片优化让网站大小减少 62% Web 性能优化:缓存 Re ...
- Web 性能优化: 图片优化让网站大小减少 62%
摘要: 压缩各种格式的图片. 原文:Web 性能优化: 图片优化让网站大小减少 62% 作者:前端小智 Fundebug经授权转载,版权归原作者所有. 这是 Web 性能优化的第二篇,上一篇在下面看点 ...
随机推荐
- Shell教程
http://www.reddragonfly.org/abscn/index.html
- POJ 2965. The Pilots Brothers' refrigerator 枚举or爆搜or分治
The Pilots Brothers' refrigerator Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 22286 ...
- 并行计算提升32K*32K点(32位浮点数) FFT计算速度(4核八线程E3处理器)
对32K*32K的随机数矩阵进行FFT变换,数的格式是32位浮点数.将产生的数据存放在堆上,对每一行数据进行N=32K的FFT,记录32K次fft的时间. 比较串行for循环和并行for循环的运行时间 ...
- grub2配置显示系统选择菜单(ubuntu 14.04)
背景: 有一次遇到过安装的新的内核后,ubuntu并没有显示选择内核的grub菜单,按shift键才会弹出,有时候shift按得不准就又进入了不是想进入的那个系统. 配置方法: sudo vim /e ...
- 解决IE浏览器文字上面放无内容的元素选不中的方法
<div class="md1"> <p><i>sdgsgereryeryery</i></p> <label c ...
- 商城项目:装nginx时碰到的各种问题
因为项目需要,我们要在linux上nginx.碰到了各种问题.在这里一一记录下来. 首先我要开启我的两个虚拟机,开起来之后.用主机的SeureCRT去连接.都是好的. 但是我在虚拟机机上去ping I ...
- ServerSocket的介绍
导语 仅仅只有Socket类是不足以编写服务器的.要创建一个Socket,你需要知道希望连接哪个Internet主机.编写服务器程序时,无法预先了解哪个主机会联系你,即使确实知道,你也不清楚那个主机希 ...
- Switch重构处理
public class Fun{ public void IFNumberid(int flag) { switch (flag) { : Console.WriteLine("优秀&qu ...
- Markdown语法
概述 Markdown的理念是能让文档更容易读.写和随 改. 它用简洁的语法代替排版,格式语法只涵盖纯文 本可以涵盖的范围. 不在 Markdown 涵盖范围之内的标签,都可以直接在文档里面用 HTM ...
- ssh 登录慢?
修改 /etc/ssh/sshd_config 文件中对应的配置为: GSSAPIAuthentication no UseDNS=no 修改 /etc/nsswitch.conf 文件中对应的配置为 ...