Web前端性能优化教程:精简JS 移除重复脚本

开发 前端 开发工具
本文是Web前端性能优化系列文章中的第七篇,主要讲述内容:精简Javascript代码,以及移出重复脚本。完整教程可查看:Web前端性能优化

本文是Web前端性能优化系列文章中的第七篇,主要讲述内容:精简Javascript代码,以及移出重复脚本。完整教程可查看:Web前端性能优化

[[132147]]

一、精简javascript

基础知识

精简:从javascript代码中移除所有的注释以及不必要的空白字符(空格,换行和制表符),减少javascript文件的大小。

混淆:和精简一样,会从javascript代码中移除注释和空白,另外也会改写代码。作为改写的一部分,函数和变量的名字将被转换为更短的字符串,所以进一步减少了javascript文件的大小。

混淆的缺点

1. 缺陷:混淆过程本身很有可能引入错误。

2. 维护:由于混淆会改变javascript符号,因此需要对任何不能改变的符号进行标记,防止混淆器修改它们。

3. 调试:经过混淆的代码很难阅读,这使得在产品环境中更加难以调试。

相对而言,精简出错的概率会少很多。

一个精简和混淆的示例

这个示例将使用JSMin进行精简,使用yuicompressor进行混淆。原始js如下:

//anthor:teroy/*

This is for test.

*/

function show(name, day) {

alert(name);

alert(day);

}

function test(name, day) {

var variable = name;

show(name, day);

}

JSMin精简后的代码:

function show(name,day){alert(name);alert(day);}

function test(name,day){var variable=name;show(name,day);}

yuicompressor混淆后的代码:

function show(b,a){alert(b);alert(a)}function test(c,a){var b=c;show(c,a)};

可见,混淆更能减少js代码的大小。

对精简和混淆进行抉择

我们知道启用gzip压缩能减少组件的传送大小,压缩后精简和混淆的差别会进一步减少,综合考虑混淆可能带来的额外的风险,所以优先考虑使用精简。不过,如果对于性能的***追求,可以使用混淆,但要做足测试,确保混淆不会带来其他的问题。

JQuery作为非常流行的前端框架,除了有开发版外,也提供了一个min版本,供实际部署web使用,这个min版本就使用了混淆,***化地减少代码总量。

二、移除重复脚本

出现重复脚本的原因

导致一个脚本的重复又两个主要因素:团队大小和脚本数量。开发一个网站需要极大数量的资源,不同的团队需要构建一个大型web的不同部分,当团队整合和沟通工作没有做足,则容易出现重复脚本的情况。当然脚本数量也是重要的一环,脚本数量越多越容易出现重复脚本的情况。

重复脚本如何损伤性能

在没有缓存的情况下,如果在html中重复链接了相同的脚本,IE7以下(包括IE7)将会产生两次HTTP请求,IE8以上则不会。

除了产生不必要的HTTP请求外,对脚本进行重复执行也会浪费时间,脚本的重复执行在浏览器中都存在。

如何避免重复脚本

1. 形成良好的脚本组织。重复脚本有可能出现在不同的脚本包含同一段脚本的情况,有些是必要的,但有些却不是必要的,所以需要对脚本进行一个良好的组织。

2. 实现脚本管理器函数。

 【编辑推荐】

 

责任编辑:王雪燕 来源: 站长之家
相关推荐

2022-03-02 11:13:50

Web前端开发

2012-01-10 16:22:25

Web

2013-01-22 15:27:23

WebWeb前端

2017-06-22 13:07:21

2017-02-05 17:33:59

前端优化Web性能

2018-06-27 08:21:31

前端Web渲染

2019-07-16 11:15:04

JavaScriptCSS数据库

2014-12-10 10:12:02

Web

2012-07-13 09:58:06

WEBWEB前端性能优化

2020-10-16 09:00:12

前端开发技术

2019-11-01 14:00:58

前端性能优化代码

2022-11-16 12:03:13

性能优化前端

2022-05-17 09:02:30

前端性能优化

2020-10-16 10:40:39

前端性能可视化

2022-02-16 08:11:52

组件渲染前端

2022-01-21 10:09:34

前端开发技术

2021-07-05 14:55:28

前端优化图片

2012-09-13 11:13:26

IBMdw

2011-04-25 09:11:15

2009-06-11 17:15:23

JavaScript性
点赞
收藏

51CTO技术栈公众号