web前端性能优化
来源:互联网 发布:javascript注释方法 编辑:程序博客网 时间:2024/06/06 15:41
为何要前端性能优化:
* 数据库连接超过最大限制,一般表现为程序的连接池满,拒绝了与数据库的连接。
* 数据库死锁
* Web Server 超过最大连接数(一般在虚拟主机上才会限制)
* 内存泄漏
* Http连接数太多,即访问量超过了机器和软件设计正常所能提供的服务
1、在写XHTML时做到结构语义化
2、css,js文件数量及大小的优化
减少CSS的个数,减少http请求。减少重复性代码
3、背景图片数量及大小的优化
在我们的css定义背景的时候,可以通过坐标来实现对背景进行定位的,既然如此,那么我们可以将这些背景合并起来,这样即可减少http请求数。
把样式表置于顶部
把脚本置于页面底部
避免使用 CSS表达式(Expression)
使用外部 JavaScript和CSS
削减 JavaScript和CSS
用 <link>代替@import
避免使用滤镜
剔除重复脚本
减少DOM访问
开发智能事件处理程序
一、服务器侧优化
1. 添加 Expires 或 Cache-Control 信息头
某些经常使用到、并且不会经常做改动的图片(banner、logo等等)、静态文件(登录首页、说明文档等)可以设置较长的有效期(expiration date),这些HTTP头向客户端表明了文档的有效性和持久性。如果有缓存,文档就可以从缓存(除已经过期)而不是从服务器读取。接着,客户端考察缓存中的副本,看看是否过期或者失效,以决定是否必须从服务器获得更新。
2. 压缩内容
对于绝大多数站点,这都是必要的一步,能有效减轻网络流量压力。
3. 设置 Etags
客户端在请求一份文件的时候,服务端会检查客户端是否存在该文件,如果客户端不存在该文件,则下载该文件并返回200;如果客户端存在该文件并且该文件在规定期限内没有被修改(Inode,MTime和Size),则服务端只返回一个304,并不返回资源内容,客户端将会使用之前的缓存文件。而etags就是判断该文件是否被修改的记号,与服务器端的资源一一关联,所以etags对于CGI类型的页面缓存尤其有用.
需要注意的是,使用etags会增加服务器端的负载,在实际应用中需要自行平衡。
二、Cookie优化
1. 减小Cookie体积
HTTP coockie可以用于权限验证和个性化身份等多种用途。coockie内的有关信息是通过HTTP文件头来在web服务器和浏览器之间进行交流的。因此保持coockie尽可能的小以减少用户的响应时间十分重要。
使cookie体积尽量小;
在合适的子域名上设置bookie,以免影响其他子域名下的响应;
设置合理的过期时间,去掉不必要的cookie。
2. 对于页面内容使用无coockie域名
当浏览器在请求中同时请求一张静态的图片和发送coockie时,服务器对于这些coockie不会做任何地使用。因此它们只是因为某些负面因素而创建的网络传输。所以你应该确定对于静态内容的请求是无coockie的请求。创建一个子域名并用他来存放所有静态内容。
例如,域名是www.example.org,则可以考虑可以在static.example.org上存在静态内容。但是,如果不是在www.example.org上而是在顶级域名example.org设置了coockie,那么所有对于static.example.org的请求都包含coockie。在这种情况下,可以考虑重新购买一个新的域名来存在静态内容,并且要保持这个域名是无coockie的。例如,t.qq.com使用的是qpic.cn,weibo.com使用的是sinaimg.cn,xiaonei.com使用的是hdn.xnimg.cn等等。
性能方面的考虑还有使用带有www的子域名并且在它上面设置coockie,因为忽略www会把cookie设置到*.example.com上去,使cookie带有一些不必要的信息。
三、JAVA SCRIPT 和 CSS优化
1. 把 CSS 放到代码页上端
这么做可以避免浏览器在解释一次之后,使用css进行第二次解释,因为用户对css裸奔日效果根本就不感兴趣。
2. 避免 CSS 表达式
凡是只有IE能用的东西,都不是好东西。影响浏览器渲染时间
3. 从页面中剥离 JavaScript 与 CSS
剥离后,能够有针对性的对其进行单独的处理策略,比如压缩或者缓存策略。
4. 精简 JavaScript 与 CSS
语法能简写话尽量简写。
5. 使用 <link> 而不是 @importChoose <link> over @import
在 IE 中 @import 指令等同于把 link 标记写在 HTML 的底部,这与第一条相违背。
6. 避免使用CSS Filter
尽量使用png格式的图片来代替滤镜效果,因为开启滤镜会加大浏览器的开销。
7. JS尽量放到页面最下端
当一个脚本在下载的时候,浏览器会卡住,无法响应其他请求。所以,可以将功能性的JS放到最后端去处理。
一般浏览器可以允许并行下载,取决于主机个数、带宽等(默认情况下,IE是2个而FF是8个)下载脚本时并行下载实际上是被禁用的。
8. 页面展现尽量交给CSS完成
四、图片优化
1. 优化图片
尽可能的使用 PNG 格式的图片,因为和GIF相比,PNG有更多的功能和更小的体积,而且未来PNG会加入动画效果:
2. 使用 CSS Sprites 对图片优化
简单的说就是"利用 CSS background 相关元素进行背景图绝对定位",把多次HTTP 调用变为一次调用
qq表情在鼠标没有经过的时候,都是从一张图片上绝对定位出来的,只有在鼠标放到某一张表情上时,才会从服务器上下载gif图片,这样可以减少(N-1)次HTTP请求。
使用 CSS Sprites 的不足之处是客户端将消耗更多内存,因为CSS Sprites 会打开多个图片的副本,目前的解决办法是按照使用频率不同,合并成几个级别的图片,分批次下载并在客户端展示。
3. 不要在 HTML 中缩放图片
用 ImageMagic 命令(convert )就能将图片缩放成合适的尺寸,所以尽量不要交给浏览器去执行。
4. 用更小的并且可缓存的 favicon.ico
原因是没有favicon.ico,服务器会返回一个404,与可以长时间缓存的文件相比,大量的404会增加服务器的响应数量。
五、内容优化
1. 减少 DNS 查找
DNS lookup 是很耗费时间的步骤,网站上如果过多的使用了站外的 Widget ,DNS 查找带来的问题是不容忽视的。
2. 尽量减少重定向
并且注意一些不必要的重定向,比如对 Web 站点子目录的后面添加个 "/" ,就能有效避免一次重定向。对于服务器来说,请求http://example.com/fml 与请求 http://example.com/fml/ 是有差异的。如果是 Apache 服务器,可以通过配置mod_rewrite解决这个问题。
3. 切分组件到多个域
主要的目的是提高页面组件并行下载能力,但注意,也不要同时使用过多的域名,否则就会出现第一条DNS lookup过多的问题,一般情况下两个域名就可以了。
4. 杜绝 http 404 错误
对页面链接的充分测试加上对 Web 服务器 error 日志的不断跟踪可以有效减少 404 错误,并提升用户体验。
- Web 前端性能优化
- Web 前端性能优化
- WEB前端性能优化
- web前端性能优化
- web前端性能优化
- web前端性能优化
- web前端性能优化
- Web前端性能优化
- Web前端性能优化
- web前端性能优化
- web前端性能优化
- Web前端性能优化
- web前端性能优化
- Web前端性能优化
- web前端性能优化
- Web前端性能优化
- web前端性能优化
- Web前端性能优化
- java集合17--TreeSet源码走读
- objc 小笔记
- eclipse报错Bad version number in .class file
- 3次握手,4次放手
- HDU 5961 传递(暴力枚举)
- web前端性能优化
- 从TCP三次握手说起——浅析TCP协议中的疑难杂症
- C语言:判断一个字符串是否为回问字符串(回文字符串也是一个字符串,但是原字符串和字符串逆序之后一样,比如”abcba","cddc"就是回文字符串
- 关于静态构造函数和BeforeFieldInit
- studio项目中import module报错
- Retrofit的使用,及介绍,Retrofit中的各种方法的详细描述简单案例,三分钟学会Retrofit
- java集合18--Iterator和Enumeration比较
- bzoj1619(搜索)
- LeetCode No.225 Implement Stack using Queues