规则12 移除重复脚本
1. 导致重复脚本的主要因素:团队大小和脚本数量。
2. 重复脚本损伤性能
a. 不必要的HTTP请求
重复脚本无长久缓存时(没设置Expires),会产生两次HTTP请求。第一次会产生一次脚本请求,一次条件GET请求;第二次会产生两次条件GET请求;
重复脚本有长久缓存时(设置Expires),第一次会产生一次HTTP请求,第二次就不会产生缓存(但刷新页面会产生二次max-age=0【刷新缓存有效期】的条件GET请求);
b. 执行Javascript所浪费的时间
脚本会多次执行。
3. 避免重复脚本——实现一个脚本管理模块
a. HTML中:<script type="text/javascript" src="menu_1.0.17.js"></script>
b. PHP中,<?php insertScript('menu.js') ?>
<?php
function insertScript($jsfile){
if(alreadyInserted($jsfile){
return ;
} ;
pushInserted($jsfile) ;
if(hasDependencies($jsfile)){
$dependencies = getDependencies($jsfile) ;
foreach($dependencies as $script){
insertScript($script) ;
}
}
echo '<script type="text/javascript" src=" '.getVersion($jsfile).' "></script>' ;
}
?>
insertScript函数会检查脚本是否存在,不存在是再插入脚本,并先插入其依赖的脚本。getVision也很重要,长久Expires时,需要改变脚本名使得页面使用新版本脚本,这时只要简单更新getVision即可。(脚本名_版本号)