说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

精简代码,为网站减负的十大建议

HTML文档下载 WORD文档下载 PDF文档下载
过于笨重的网站最终将影响用户体验。据统计,2013年每个网页文件的大小平均增加了32%。如何为网站减负,提高访问性能?本文列出了精简代码量的十大原则。

网站快速加载,是提供良好用户体验的前提。然而,网站功能的不断增多,程序包的不断臃肿,导致网站访问时较大的下载量,最终影响了响应速度。没有一个用户喜欢等待,如何减少代码量,为网站减去过多负担,Craig Buckler在sitepoint网站发表了一篇文章《10 Quick and Easy Fixes to Reduce Page Weight》,分享为网站减负的十个建议。下面为该文的编译内容。

2013年,网站页面的重量增加了32%,竟然达到了1.7MB,包含96个独立HTTP请求。这只是一个平均数值,其中近一半的网站已经超过了这个数值。网站的过度臃肿正趋于流行,其中很大的责任在于Web开发者。

过于笨重的网站将严重影响网站的最终体验,主要表现在以下四个方面:

  • 更大的下载量,导致更慢的用户体验。并不是每个人都拥有20M的网络连接,尤其是对于那些不发达地区。不管你的网站多么优秀,用户永远不希望等待。
  • 移动Web访问正迅速发展,移动网民几乎占到所有网民的1/4。在典型的3G网络连接下,一个1.7Mb的网站加载需要近一分钟。如果你的网站无法高效工作于这些移动设备,那采用响应式Web设计技术又有什么用呢?
  • 网站加载速度已被谷歌加入排名算法中。加载缓慢会降低网站排名,同时也会影响搜索引擎优化。
  • 网站包含的代码越多,更新和维护它所花费的时间就会越长。

Craig Buckler预言,2014年网页的重量将会下降。那如何精简代码,为网站减负呢?Craig Buckler给出了十条建议。这些建议中涉及到的技术均是大家熟知的。

1.启用GZIP压缩

根据 W3Techs.com上的数据显示,近一半的网站都未进行过压缩。在Web主机上,通过简单的服务器设置即可开启GZIP压缩。

2.支持浏览器缓存

如果浏览器能容易地缓存一个文件,那它就无需反复下载该文件了。实现该功能的一个解决方案,就是在HTTP头中设置合适的 Expires Header、上一次修改时间或采用的 ETags。

你可通过配置服务器来自动完成以上工作。下面是Apache中的.htaccess文件,其中的代码实现了“将所有图片缓存一个月”的功能。


3.使用CDN

浏览器限制了每个域中可同时处理的并发HTTP请求数量:4至8个。如果你的网页需要从域中加载96个资源,那浏览器最多可设置12组并发请求。(因为文件大小并不同,这种情况实际上并不会发生,但该限制仍然适用。)

如若从另一个域中请求静态文件,则可使浏览器处理的HTTP请求数量加倍。此外,一个文件被调用后就会产生一个缓存文件,以供下一个调用它的网站使用。我们可选用JavaScript库(如jQuery)和字体库,同时你也可以考虑专用的图片托管。

前面提到的三条建议可以加快网站的加载速度,下面的建议将帮助我们检查网站代码,以高效地减少网站重量。

4.删掉没用的资源

网站一直在变革之中。如果你不再使用某组件,那就删掉与之关联的CSS和JavaScript。如果它们包含在一个单独文件中,处理起来就会很简单。否则,你需要借助一些工具,如Chrome的Audit开发工具、 JSLint、 Dust-Me Selectors、 CSS Usage、 unused-css.com,也可构建 grunt-uncss此类的工具。

5.合并和压缩CSS

理想的情况是只拥有一个CSS文件(如果你使用RWD以支持IE的老版本,那就需要两个CSS文件。)构建并维护几个单独的CSS文件也算合理,但在部署到产品服务器之前,你应该将它们集合在一起,并删掉那些不必要的空白区域。

Saas、LESS和Stylus等预处理器可帮你完成这些痛苦的工作。 Grunt.js、 Gulp等工具可自动化你的工作流。如果你更喜欢GUI,可借助Koala提供的免费跨平台应用。

如果你觉得这些比较麻烦,也可手动通过命令行工具将CSS文件集中在一起,如在Windows中,可使用如下代码:


在Mac/Linux中,可使用如下代码:


最终文件经过在线CSS压缩工具(如 cssminifier.com、 CSS Compressor & Minifieror等)压缩后即可运行。

最后,请记住在头部(Head)加载所有CSS,以便浏览器展示接下来的HTML元素,同时也可避免浏览器下次再重绘页面元素。

6.压缩并合并JavaScript

平均每个页面需加载18个JavaScript文件,所以我们要将自己编写的JavaScript代码进行合并和压缩。我们可以自己构建压缩工具,也可以使用在线工具,如 YUI Compressor、 Closure Compiler及 CompressorRater。

使用JavaScript压缩工具进行压缩,必须十分谨慎。你的代码有一点小问题,即便丢失了一个分号,压缩过程也可能会失败。无论如何,对JavaScript文件进行压缩,可减少HTTP请求数量,从而提高网站性能。

最好在</body>之前加载JavaScript,这样可确保该脚本不会阻碍其它内容的加载,同时在该脚本被下载和执行之前,页面的内容已加载完毕,并可阅读了。

7.使用正确的图片格式

错误地使用图片格式会增加网页的负载。图片格式通常有以下使用原则:

  • 照片使用JPG格式;
  • 其他的使用PNG格式。

当你有一些小图像,它们仅包含有限的几种色彩集,采用GIF格式,其压缩效果可能更好。本文暂不讨论向量图。

现在有大量免费的图形软件包,可用来转换图片的格式。其中像XnView允许你批处理这些文件。请记住下面两条原则:

JPG为一种有损压缩格式,其质量介于0(质量很差、更小的文件)至100(质量最好,更大的文件)之间。介于30至70之间的大部分图片显示效果比较好。

PNG支持256颜色表和24位的真彩色。如果你不需要透明,并能控制调色板,那256的PNG图像颜色模式可能压缩得更好。

8.重整大图片的尺寸

即便是最入门级的智能手机上的照片机(三百万像素),其拍出来的照片往往太大而不适合在网站上显示。但大部分内容编辑者往往将图片直接从相机中直接上传到网站上。因此,我们需要一个可以自动调整图片尺寸的系统。

图片的尺寸永远不能超过它所在容器的最大值。如果网站模板的宽度最大为800px,那图片的宽度就不能超过该值。一些高分辨率、Retina显示屏,可显示宽度为1600px的图片,但这仍比从相机中直接输出的图片要小。

在减轻网页重量方面,图片尺寸的调整起着重要的作用。将图片尺寸缩小50%,可节省75%的总空间,相当于减少了文件大小。

9.进一步压缩图片

即便已将图片调整为正确的格式和尺寸,你仍可使用一些分析和优化图像的工具进一步压缩图片。这些工具包括 OptiPNG、 PNGOUT、 jpegtran和 jpegoptim。大部分工具可独立安装,也可整合入你构建的过程中。另外,还有一些在线工具,如Smush,它可以工作于云上。

10.去掉不必要的字体

Web字体对设计进行了重大改革,减少了基于图像的字体的使用。但是,使用传统字体后,网页的代码量往往会增加数百KB。所以网站中这种字体的使用尽量控制在两、三种以内。

利用以上提到的方法,大部分网站可以将减去30~50%的重量。对于一般的网站,可以减掉800KB的代码量,访问速度可获明显提升。(编译:陈秋歌)

内容来自:10 Quick and Easy Fixes to Reduce Page Weight

Android读写Txt文本文件代码 Android游戏开发之旅17 图像渐变特效 Android游戏开发之旅16 异步音乐播放 Android游戏开发之旅15 按键中断处理 Android游戏开发之旅14 游戏开发实战一 Android游戏开发之旅13 Sensor感应示例 Android游戏开发之旅12 Sensor重力感应 Android游戏开发之旅11 View中手势识别 Android游戏开发之旅十 位图旋转 Android游戏开发之旅九 VideoView类剖析 Android游戏开发之旅八 SurfaceView类实例 Android游戏开发之旅七 自定义SurfaceView Android游戏开发之旅六 自定义View Android游戏开发之旅五 Path和Typeface Android游戏开发之旅四 Canvas和Paint实例 Android游戏开发之旅三 View类详解 Android游戏开发之旅二 View和SurfaceView Android游戏开发之旅一 长按Button原理 Android程序内存管理必读 Android按键事件映射表和转义符对照 Android Intent大全更新到API Level8 Android中Intent对应的category列表大全 Android中内嵌字体实现个性化 TextView多行本文滚动轻松实现 获取和设置ListView的选择项 EditText中显示隐藏Android输入法窗口 自定义ListView行间的分割线 Android程序完全退出的三种方法 WebView使用技巧和介绍 EditText仅允许特定类型数据输入 自定义Android应用的访问权限 求问用在BCB或DEPHI那种方法把标准文本文件导入数据库效率最高 一个初学.net的问题,望大家不要见笑!! 多个文件在光盘里面先后自动启动 C#中类型转换,请大家看看: 中秋节散分 关于.net下客户端与数据库字符集不同时的处理 大家中秋快乐!以前没散过分今天散点。 文档结构的问题 抢救,可以用vb.net写一个用户控件或动态库,在asp.net里调用吗? 请问大家一个问题 如何解压Linux下的.zip文件? 下接列表框的问题 来这里几天了,看大家都是很消极的,为什么? 可以动态增加<option>吗? datagird高手的问题! 数据库导入问题。在线等!急啊!!! 高手来帮忙 為何調用data module中的adoconnection會出錯。 怎样把几张jpg图转换成avi的文件 ★☆pb8异机连接sql server数据库的问题???50分献 菜鸟求问,急需回答!!! 有哪位高手知道 哪位同志能提供软件工程电子文档教程下载的站点给我 菜鸟问题 简单问题 ASP里流媒体上传问题 初学VC得困惑 用第三方类MultipartRequest上传文件时,怎样实现根据用户填写的表单来决定上传路径 当我插入一个usb设备,系统装好驱动后注册表会有变化吗? 如何解决BUTTON重入的问题。 关于如何获得文件域中的文件名!!!!!!!!!!!!!!!!! 游戏编程初学者的作品.(弹球) 有没有汨罗的朋友呀?????? 在线等,触发器如何使用? 请问ActiveX controls event发出的消息怎样在container里接收 UNIX的cc编译结果: [请问]i586是什么意思?PPC又是什么?另外RedHat9无法安装的问题…… 不知道大家都玩不玩新闻组,给大家提供几个中文新闻组地址并讲一下使用方法,感觉比BBS好玩! 高分求助,现谢谢了。 !急关于CrystalReport 下面这样类型转换,居然可行, 我下面的问题解决了 ORACLE统计问题 腊肉是月老啊,单身的哥哥们找腊肉拉红线啊! 新闻搜索 using namespace std; 微星845 Ultra-C 支持P4赛扬2.0的吗? 请问哪里有关于cc的比较好的文档资料. 水晶报表的问题!!!!!!!!!!!! 关闭Jbuilder9时,会弹出微软拼音输入法的关于信息框,如何解决? TreeView的删除问题/// 正N边形的中心角与每一个外角相等, 在直线AB上有一点O,过O点的射线OC可以绕O点在AB上侧转动,OD为∠COB的平分线,OE为∠COA的平分线,如图,要使∠AOE≤60°.(1)列出关于∠BOD的度数x的不等式,并求出其范围;(2)讨论∠EOD的变化情 勰拼音怎么读 甲乙丙三人各乘一台升降机,他们从自己乘坐的升降机往外看.①.丙看见地面在匀速甲乙丙三人各乘一台升降机,他们从自己乘坐的升降机往外看。①.丙看见地面在匀速上升②.甲看见丙乘的 能阐述家庭含义的小故事!就是像那种说家不仅仅是房子的那种! a sound general practitoner 其中的sound是什么意思呢 翻译解释的是一个经验丰富的医生不懂sound是什么意 “勰”字用拼音怎么念? 勰这个是什么字?急求哦哦 without a sound的意思.he left without out a sound.可不可以翻译成他头也不回的离开了. 痴人妄想是什么意思? 本签即是痴人丧德之象 本签即是痴人丧德之象.凡事守旧待时.君汝目下即是水泡痴人似落花之命也.事事应顺天理.方平安.眼中无人之时.将何.必有福祸来临.不可不慎.亦即是到头毕竟如麻者. 中国经济合作新路径:重建“海上丝绸之中国东南亚外交新局:学习他国经验 寻美巴领导人会晤重在“释暖”消息称韩已确定F-35A为下一代战机挪威销毁叙化武受美国热捧 坦言国内压日本6名女性涉嫌在网络上上传猥亵视频白宫助理在社交网站上匿名批评奥巴马被悉尼科技大学危险化学物泄露 5000印尼日惹苏丹嫁女办3天豪华婚礼邀总统挪威销毁叙化武受美国热捧 坦言国内压日本进入胖女时代 专家称或因对瘦人审英国就医怪象:急诊室候诊时间长 最久发改委政务服务大厅试运行 设服务窗口南阳警方破获铁路系列盗抢案 家族式盗埃及法院判穆巴拉克谋杀罪名不成立 检韩媒:金大中遗孀访朝时间推迟至201吉林省人社厅副厅长崔力夫涉嫌严重违纪强冷气流将影响日本 九州部分山区或出第45届印度国际电影节闭幕捷报花园拍卖停车位遇冷 16个车位仅水利定点扶贫解决中国中西部214万群河钢唐钢加快营销模式变革促产品升级赢怒宋门 徒第一日不落帝国网游之副职称王飞跃东方圣武玄天白领守护人天纵遨游三界六道空之轮回劫雷途九变龙诀岳阳门旅游南宁海底世界旅游南宁人民公园旅游西小河历史街区旅游建设六马路旅游平武报恩寺旅游皇后饭店旅游武陵村旅游观音潭旅游川龙瀑布旅游晴川阁号游轮旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘