前台页面优化全攻略(一)
未来1年,网页的大小将会增长至980KB,未来5年,大小将会增至2.4MB,这是令人震惊的数字,而且这只是个平均值,有一半的网站会大于这个值。网站也得了肥胖症,而我们这些开发者就是罪魁祸首。
一个超重的网站会对你产生如下影响:
1. 网站代码越多,用户下载的就越多,加载速度就会越慢。在这个地球上,并不是每个人都能享受20M的宽带,每一个开发者心里都很清楚,用户不愿意等。
2. 众所周知,移动互联网发展迅速,对于2G网络来说,加载1.7M的页面甚至需要一分钟时间。
3. 影响搜索引擎抓取速度将会对网站排名造成很大影响。
4. 对于开发者来说,代码量越大,就越不容易更新和维护。
我猜测今年页面平均代码量会减小,希望事实如我所愿。如今已经有很多人开始关注这个问题,并出现了很多优化的工具,而且这些技术都非常容易上手,不需要花太多时间,也不需要重新开发。
在本文中,我会给大家一些建议。前三个建议实际上不能给网页减肥,但它们仍能有效的加快网页加载速度。
1. 用GZIP格式压缩
gzip是GNUzip的缩写,它是一个GNU自由软件的文件压缩程序。它是Jean-loupGailly和MarkAdler一起开发的。第一次公开发布版本是1992年10月31日发布的版本0.1,1993年2月发布了版本1.0。
我们在Linux中经常会用到后缀为.gz的文件,它们就是GZIP格式的。现今已经成为Internet 上使用非常普遍的一种数据压缩格式,或者说一种文件格式。
HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术。大流量的WEB站点常常使用GZIP压缩技术来让用户感受更快的速度。这一般是指WWW服务器中安装的一个功能,当有人来访问这个服务器中的网站时,服务器中的这个功能就将网页内容压缩后传输到来访的电脑浏览器中显示出来.一般对纯文本内容可压缩到原大小的40%.这样传输就快了,效果就是你点击网址后会很快的显示出来.当然这也会增加服务器的负载. 一般服务器中都安装有这个功能模块的。
根据W3C组织调查,大部分的网站都没有启用压缩功能。
2. 支持浏览器缓存
如果浏览器支持缓存,我们就不用重复下载网页资源。最简单的设置缓存方法是在响应头中添加相应的内容,包括:Expires header,Last-Modified等。
你可以可以通过配置服务器来自动添加这些属性。比如你在Apache服务器中配置缓存所有的照片一个月:
<IfModule mod_expires.c>ExpiresActive On<FilesMatch "\.(jpg|jpeg|png|gif|svg)$">ExpiresDefault "access plus 1 month"</FilesMatch></IfModule>
3. 使用内容分发网络 (CDN)
CDN的全称是Content Delivery Network,即内容分发网络。其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络“边缘”,使用户可以就近取得所需的内容,提高用户访问网站的响应速度。CDN有别于镜像,因为它比镜像更智能,或者可以做这样一个比 喻:CDN=更智能的镜像+缓存+流量导流。因而,CDN可以明显提高Internet网络中信息流动的效率。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等问题,提高用户访问网站的响应速度。
为更好地理解CDN,让我们看一下CDN的工作流程。当用户访问已经加入CDN服务的网站时,首先通过DNS重定向技术确定最接近用户的最佳CDN节点,同时将用户的请求指向该节点。当用户的请求到达指定节点时,CDN的服务器(节点上的高速缓存)负责将用户请求的内容提供给用户。具体流程为: 用户在自己的浏览器中输入要访问的网站的域名,浏览器向本地DNS请求对该域名的解析,本地DNS将请求发到网站的主DNS,主DNS根据一系列的策略确定当时最适当的CDN节点,并将解析的结果(IP地址)发给用户,用户向给定的CDN节点请求相——应网站的内容。
以上三个方法可以有效地加快页面的访问速度,现在我们将对你的代码进行诊断,帮助我们给页面减肥。
4. 删除不需要的资源
当你不再需要一个组件的时候,你应该删掉它的CSS和JavaScript代码,如果这些代码都单独放在一个文件中,那删掉它们也不是难事,但如果已经没有用的代码和其它代码在一个文件中,那你肯定要费不少精力去删掉它们。这个时候你就需要使用第三方的工具来帮你一键解决,比如JSLint, Dust-Me Selectors, CSS Usage, unused-css.com 或是像grunt-uncss一样的构建工具。
5. 通用和最小化CSS
理想情况下,需要一个单独的CSS文件,让每个页面都调用这一个布局,当然,如果你想要支持老版本的IE,你就得多弄一个CSS文件。当你把它们构建到服务器上之前,你应该把代码间所有不必要的格式都删掉。
有很多预处理工具都可以帮你解决这件麻烦事,比如Sass, LESS 和Stylus。
有一些方法可以帮助你直接合并多个CSS文件,在Windows上:
copy file1.css+file2.css file.css
在 Mac或Linux上:
cat file1.css file2.css > file.css
你可以把得到的CSS文件再经过在线的CSS压缩工具删除格式化,cssminifier.com, CSS Compressor & Minifier 和CSS Compressor都是很不错的工具。
最后,在head标签中加载所有的CSS,这样浏览器就知道你的页面样式不用多次重绘了。
6. 通用和最小化的JavaScript
平均每个页面加载了18个javascript文件,虽然把像jQuery这样的库文件单独分开非常实用,但是你自己的JavaScript代码应该保持通用和最小化。同样很多第三方的工具可以帮你解决这样事情,比如 YUI Compressor, Closure Compiler 和我最喜欢用的 The JavaScript CompressorRater。简化的JavaScript代码会加快网页的访问速度,减少HTTP请求次数。
最后,最好在HTML的body标签后放置JavaScript引用代码,这样能保证JavaScript代码不影响到其它内容的加载。
7. 使用正确的图片路径
加载错误的图片格式会对你的网页造成很大影响,一般来说选取图片我们应用遵循如下原则:
1.照片使用JPG格式。
2.其它所有的图片都使用PNG格式。
8. 调整大图的大小
目前智能机所拍出的照片越来越大,你不可能把原照片直接展示在页面中。普通的编辑器都会直接上传原图,这样会让页面的加载速度慢到另一个级别。在正常的照片处理中,一般都没有必要给用户高质量的图片展示。所以你需要一个自动调整图片大小的工具。
需要注意的是,图片的尺寸是不能超过容量的大小的,这样一来页面加载了全图,却无法展示出来。现在照片的尺寸基本上都超过电脑显示屏的尺寸了。
图片的大小在网页总大小中占很大的比重,图片减小50%会导致整体页面大小减少75%,所以你应该认真解决一下图片的加载。
9. 进一步压缩图片
仅仅调优图片的大小是不够的,你应该通过第三方工具对图片进行分析,进一步压缩图片。比较好用的工具有OptiPNG, PNGOUT, jpegtran 和jpegoptim。这些工具大都能安装成独立的工具或是整合到开发过程中,另外像Smush这样的工具,还可以直接在云端处理。
10. 删除不必要的字体
Web fonts已经彻底改变了字体的设计,它减少了很多不必要的文本。然而,目前的字体仍然会给你的网页带来多余的字节。如果你使用超过两种字体,这就已经开始对性能造成影响了。
结论
我相信大部分网站都可以通过以上的优化减小大概30%-50%的重量,但是身为一个完美主义的开发者这是远远不够的,我们在接下来的系列文章中会继续对网站瘦身进行深入研究
前台页面优化全攻略(一)相关推荐
- 前台页面优化全攻略(二)
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt213 在上一篇文章中,我们讨论了一些基本的页面优化和减肥方案,现在我们的页面 ...
- WinXP硬件优化全攻略
WinXP硬件优化全攻略<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" / ...
- MySQL与优化有关的命令_MySQL优化全攻略-相关数据库命令
MySQL优化全攻略-相关数据库命令 更新时间:2006年11月25日 00:00:00 作者: 接下来我们要讨论的是数据库性能优化的另一方面,即运用数据库服务器内建的工具辅助性能分析和优化. ▲ ...
- [精品教程,新老鸟必读]:极限装机、优化全攻略(新手优化教程)
[精品教程,新老鸟必读]:极限装机.优化全攻略(新手优化教程) 对于一些新手们来说,如何装机和对电脑进行优化是一件头疼的事.现在网站上也有很多相关的教程,但基本上都是以理论为主,经常把 ...
- DedeCms的SEO优化全攻略
DedeCms的SEO优化全攻略 这是一篇从DEDECMS标签入手谈SEO优化的文章,操作才需要了解DEDECMS标签的作用和规则进行修改,建议修改前先进行备份操作. 保密资料,请勿转载. 网站管理系 ...
- Android 进阶——性能优化之电量优化全攻略及实战小结(二)
文章大纲 引言 一.在低电耗模式和应用待机模式下进行测试 1.在低电耗模式下测试您的应用 2.在应用待机模式下测试您的应用 3.列入白名单的可接受用例 4.确定当前充电状态 5.监控充电状态变化 6. ...
- MyEclipse优化全攻略
MyEclipse的优化,或者其他编辑工具的优化,大致可以分为3个部分: 内存配置.加载项配置.以及默认编辑器配置: (1) 内存优化 具体配置多少内存,请根据你的机器内存来设定,现在最少也应该有2G ...
- Unity性能优化全攻略
#Unity性能优化全攻略 总结自Siki的性能优化. ##优化相关前提 ###Unity游戏安装包大/运行卡的原因 Mono虚拟机 解决这个问题 ###DrawCall https://zhuanl ...
- DedeCms SEO 优化全攻略
DedeCms 是公认的在SEO优化方面做得做好的CMS,可能很多人会说,优化是靠个人的,与CMS无关,这其实也不尽正确,因为必须程序提供商提供足够的工具才有可能,举例说:如果某CMS的栏目设置连关键 ...
最新文章
- html产品列表页的设计,产品列表页.html
- 国内ntp时间服务器ip地址
- 妹妹生了个女儿,纪念一下
- Ubuntu下安装node和npm
- java---switch
- Spring-学习笔记06【Spring的新注解】
- 学校如何把表格里的成绩,让学生以二维码的方式去扫描查询呢?
- 笑谈“委托”与“事件”
- Luogu P2827 蚯蚓
- 修改jupyter notebook的默认工作目录
- libgmailer更新了,俺的下载空间又可以使用了(使用G-Share)
- transformer机制讲解_Transformer在视觉领域的应用
- pg(高斯)(postgreSQL)数据库修改字段长度
- 睡眠监测中的一些术语和指标(AASM)
- CocosCreator Shader Editor 2D/3D 特效编辑器
- threejs 效果合成器(EffectComposer)
- 05-D. 音像制品(类与对象)
- python从后面删除重复项_如何从Python列表中删除重复项
- Dataframe中筛选出满足条件的行
- jQuery之属性操作
热门文章
- Python+Excel:将一个工作簿拆分为多个工作簿
- python之re模块,内存管理
- 【塔望咨询】案例---新消费主力军的饮食主义
- 自定义view - 收藏集 - 掘金
- C# 微信网页协议 代码记录
- 您计算机的日期和时间不正确 因此无法,电脑显示时间不正确_电脑日期时间显示不对怎么办...
- 蓝桥杯 2014-4 大衍数列
- python判断数字位数_python求数字位数的方法
- python战反爬虫:爬取猫眼电影数据 (一)(Requests, BeautifulSoup, MySQLdb,re等库)
- python 全栈开发,Day84(django请求生命周期,FBV和CBV,ORM拾遗,Git)