web前端优化

因为别人的推荐,所以看了《高性能网站建设指南》,之前一直想好好做个总结,但是拖延症有点严重,过两天可能会有一个转正面试,正好好好总结下。

《高性能网站建设指南》结合Web2.0以来Web开发领域的最新形势和特点,介绍了网站性能问题的现状、产生的原因,以及改善或解决性能问题的原则、技术技巧和最佳实践。全面涵盖了前端性能问题的方方面面。在本书中,作者给出了14条具体的优化原则,每一条原则都配以范例佐证,并提供了在线支持。

前端性能的重要性

性能黄金法则:

只有10%20%的最终用户响应时间花在了下载HTML文档上,其余的80%90%的时间花在了下载页面中的所有组件上。

所以,如果希望能够有效地减少页面的响应时间,进而提高网站整体的性能,就必须把关注点放在这80%90%中。如果我们可以将后端响应时间缩短一半,整体响应时间只能减少5%10%,而如果关注前端性能,同样是减少一半响应时间,那么整体的响应时间可以减少40%~50%,这绝对是一个巨大的提升。

规则一:减少HTTP请求

减少了HTTP请求,不管用户是在第一次访问还是后续浏览,响应时间都会有显著的减少。主要使用的方法有:图片地图,CSS Sprites,内联图片和脚本,样式表的合并。
其实简单要说就是把能包在一起的东西全部都包在一起就好了。
1、图片地图,就是把页面上用到的多个图片合并成一张图片,利用map控制显示的位置,接着在这张图片上关联多个URL,加载的时候就只要发送一次HTTP请求获取这张图片就行了。
2、CSS Sprites合并图片,减少HTTP请求
3、内联图片。浏览器不会缓存这种图像。dataurl节省了HTTP请求,但是如果这个图像在网页多个地方显示会加大网页的内容,延长下载时间。还有一点IE8以下都不支持这种图像,所以一般不用。
4、合并脚本和样式表,尽量减少js和css的请求数量

规则二:使用内容发布网络

内容发布网络(content delivery network)是一组分布在多个不同地理位置的Web服务器,用于更加有效地向用户发布内容。就是可以使用cdn,租用或者自建都可以,不仅可以缩短响应时间,还可以缓和Web流量峰值压力,而且还有提供其他服务,自行百度吧。
CDN发布的内容主要是静态内容,如图片、脚本、样式表和Flash。主要是静态内容更容易存储且具有较少的依赖性。

规则三:添加Expires头

这个规则主要是针对缓存的,使用缓存来减少加载组件的数量,不是针对首次访问的优化,但是对于多次浏览的响应时间的优化还是巨大的。通过使用一个长久的Expires头,可以使需要缓存的组件被缓存,这会在后续的页面浏览中避免不必要的HTTP请求。

Expires: Mon, 15 Apr 2024 20:20:20 GMT

这是一个有效期非常长久的Expires头,它告诉浏览器该响应的有效期持续到2024年4月15日为止。如果为页面中的一个图片返回了这个头,浏览器在后续的页面浏览中会使用缓存的图片。
Expires存在限制,要求服务器和客户端的时间严格同步,过期日期需要检查,并提供新日期,所以还有另外一种选择,cache-control使用max-age指令指定用户被缓存多久,达到的效果也是一样的。
作为一个比较low的前端开发,虽然可以看懂其中的逻辑,但是讲真,我之前完全没有听过这个词,看完之后也还不是很懂得怎么把这个付诸实践,然而这并不影响这个的规则的有效性。

规则四:压缩组件

这个其实没有什么好解释的,就是启用Gzip压缩,压缩文档、脚本、样式表,传输的大小变小了,响应时间自然就减少了。

规则五:将样式表放在顶部

规则六:将脚本放在底部

在下载脚本时浏览器会阻塞并行下载,如果放在上面的话有可能要等到页面加载完成才能看到界面的整体效果,这对用户体验是很差的。

规则七:避免CSS表达式。

表达式的问题在于对其进行的求值,它们不只在页面呈现和大小改变时求值,当页面滚动、甚至用户鼠标在页面上移过时都要被求值。所以对页面的性能影响是很大的。
CSS3提供了calc()函数,可以用来实现css的一些求值运算。

规则八:使用外部的JS和CSS

因为外部的JS和CSS是可以被缓存的,而如果是内联的话就要每次都要加载。

规则九:减少DNS查找

方法:通过使用Keep-Alive和较少的域名来减少DNS查找

其他

  • 规则十、精简JS,相当于压缩,且会除去注释及空格
  • 规则十一、避免重定向。重定向会延迟整个HTML文档的传输
  • 规则十二、移除重复脚本
  • 规则十三、配置或移除Etag
  • 规则十四、使用Ajax可缓存。确保ajax请求遵守性能指导,尤其应具有长久的expires头
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,558评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,002评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,024评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,144评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,255评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,295评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,068评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,478评论 1 305
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,789评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,965评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,649评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,267评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,982评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,800评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,847评论 2 351

推荐阅读更多精彩内容

  • Yahoo!的Exceptional Performance团队为改善Web性能带来最佳实践。他们为此进行了一系列...
    拉风的老衲阅读 1,837评论 0 1
  • 网站优化离不开前后端的互相协作,但是对于前端工程师来说,在保证后端技术方案不变时,能不能只利用前端技术来优化网站呢...
    留七七阅读 6,311评论 0 31
  • 一、Web前端优化最佳实践之 内容 1. 尽量减少HTTP请求; 合并文件,比如把多个css文件合成一个;CSS ...
    LiLi原上草阅读 538评论 0 3
  • 一、Web前端优化最佳实践之 内容 尽量减少HTTP请求; 合并文件,比如把多个css文件合成一个;CSS Spr...
    LaBaby_阅读 426评论 0 3
  • 愿意深埋 却被好奇揭开 悸动是透过玻璃的光 温和柔美 烙在心底 在另一个他(她)不知道的世界宣泄 驻足 停留 止步...
    用户eiuyhrnjdt阅读 266评论 0 1