js、css引用文件的下载方式
js、css引用文件的下载方式
一、测试(chrome):
1、直接使用<script...>、<link...>标签来混合引入脚本文件和css文件,
<script async src="1.js"></script>
<link rel="stylesheet" href="a.css">
<script async src="2.js"></script>
<link rel="stylesheet" href="b.css">
<script async src="3.js"></script>
所有文件异步并行下载,asyn属性的有无不影响下载。html下载完成后(css、js还未下载)即触发DOMContentLoaded事件。
2、通过如下document.write的方式加入脚本,并与<link...>标签混杂:
<script>document.write('<script src="1.js"></scr'+'ipt>');</script>
<link rel="stylesheet" href="a.css">
<script>document.write('<script src="2.js"></scr'+'ipt>');</script>
<link rel="stylesheet" href="b.css">
<script>document.write('<script src="3.js"></scr'+'ipt>');</script>
则:A、首先第一个css文件之前的js文件与所有的css文件并行下载。B、在全部css文件下载完成之后,第一个css文件之后的所有js文件串行下载,所有head中的css、js下载完毕后触发DOMContentLoaded事件。
即a.css、b.css、1.js并行下载,而2.js、3.js在所有css文件下载完毕之后串行下载。
3、通过如下document.write的方式加入脚本,且script加上async属性,并与<link...>标签混杂:
<script>document.write('<script async src="1.js"></scr'+'ipt>');</script>
<link rel="stylesheet" href="a.css">
<script>document.write('<script async src="2.js"></scr'+'ipt>');</script>
<link rel="stylesheet" href="b.css">
<script>document.write('<script async src="3.js"></scr'+'ipt>');</script>
则:A、首先第一个css文件之前的js文件与所有的css文件并行下载,css全部下载完毕后触发DOMContentLoaded事件。B、在css文件全部下载完成之后,第一个css文件之后所有js文件并行下载。
即a.css、b.css、1.js并行下载,而2.js、3.js在所有css文件下载完毕之后并行下载(异步)。
4、通过如下appendChild的方式加入脚本,并与<link...>标签混杂:
<script type="text/javascript">
function _appendJs(v) {
var gumAppscript = document.createElement("script");
gumAppscript.src = v + ".js";
document.head.appendChild(gumAppscript);
}
</script> <script>_appendJs(1)</script>
<link rel="stylesheet" rel="stylesheet" href="a.css">
<script>_appendJs(2)</script>
<link rel="stylesheet" rel="stylesheet" href="b.css">
<script>_appendJs(3)</script>
则:下载过程与上述第3种基本一样,即appendChild添加script默认为async下载。
5、上述下载过程,在head内与在body内的过程一样(执行过程另论)。
二、推测:
1、一旦有css文件引用开始后,后续的document.write添加script变成串行下载。
2、DOMContentLoaded事件触发时机,第1种方式最快,第3、4种方法次之,第2种最慢。
3、appendChild添加script标签,与document.write添加async的script,下载基本一致。
4、就文件下载过程而言,在head内与在body内的过程一样。
js、css引用文件的下载方式的更多相关文章
- 前端js,css文件合并三种方式,bat命令
前端js,css文件合并三种方式,bat命令 前端js文件该如何合并三个方式如下:1. 一个大文件,所有js合并成一个大文件,所有页面都引用它.2. 各个页面大文件,各自页面合并生成自己所需js的大文 ...
- html css <input> javaScript .数据类型 JS中的函数编写方式 BOM总结 DOM总结
Day27 html css div 块标签. 特点: 独占一行,有高度和宽度 span 行元素. 特点:在同一行显示,当前行满了自动去下一行显示. 不识别高度和宽度 1.1.1.1 2.输入域标签 ...
- Vue.js下载方式及基本概念
Vue.js 简介 说明及下载 Vue.js使用文档已经写的很完备和详细了,通过以下地址可以查看: https://cn.vuejs.org/v2/guide/ vue.js如果当成一个库来使用,可以 ...
- 勤能补挫-简单But易错的JS&CSS问题总结
错误频率较高的JS&CSS问题 勤能补拙,不管是哪门子技术,在实践中多多总结,开发效率慢慢就会提升.本篇介绍几个经常出错的JS&CSS问题,包括事件冒泡.(使用offset.scrol ...
- 使用Webpack加速Vue.js应用的4种方式
Webpack是开发Vue.js单页应用程序的重要工具. 通过管理复杂的构建步骤,你可以更轻松地开发工作流程,并优化应用程序的大小和性能. 其中介绍下面四种方式: 单个文件组件 优化Vue构建 浏览器 ...
- 压缩JS,CSS的工具
目标: 压缩项目中的JS,CSS文件. 方法一:使用uglifyjs uglifycss 压缩JS: 1.安装NODEJS.是一个在服务端运行的JS语言.下载地址https://nodejs.org/ ...
- Grunt的配置及使用(压缩合并js/css)
Grunt的配置及使用(压缩合并js/css) 安装 前提是你已经安装了nodejs和npm. 你能够在 nodejs.org 下载安装包安装.也能够通过包管理器(比方在 Mac 上用 homebre ...
- 页面加载异常 清除浏览器静态文件 js css 缓存 js动态加载js css文件,可以配置文件后辍,防止浏览器缓存
js清除浏览器缓存的几种方法 - 兔老霸夏 - 博客园 https://www.cnblogs.com/Mr-Rocker/p/6031096.html js清除浏览器缓存的几种方法 一.CSS和 ...
- Google Pagespeed,自动压缩优化JS/CSS/Image
Google Pagespeed,自动压缩优化JS/CSS/Image 浏览: 发布日期:// 分类:技术分享 关键字: Nginx Appache Pagespeed 自动压缩优化JS/CSS/Im ...
随机推荐
- jstl core 库 之 out set remove
jstl 核心库 out标签 out:输出的标签 * value :输出的值 * default :默认值 * escapeXml :是否转移 默认为true(转义) 代码: <!-- 输出常量 ...
- mysql连结查询
2016年4月13日 18:08:22 星期三 union 会生成临时表, 然后一同取出合并 join 或子查询, 会生成临时表进行嵌套循环 临时表, 缺点就是没有索引
- Firefox下载自动保存
profile.setPreference("browser.download.folderList", 2); profile.setPreference("brows ...
- 快速上手制作Icon Font
现在在提起Icon Font,已经不是什么新鲜的词汇了,网上已经有很多介绍它的文章,并且很多网站也已经将它用到,本篇主要是将制作Icon Font的整个流程整理一下,并且加入了自己在制作中遇到的问题, ...
- mysql 外键 级联
主表 -- 创建用户信息表 create table userinfo ( userid int primary key not null auto_increment COMMENT '主键', u ...
- 解决NSData转NSString返回nil的问题
// 字符串转Data NSString *str =@"jesfds"; NSData *data =[str dataUsingEncoding:NSUTF8StringEnc ...
- mysql在linux下修改存储路径
通过下面几步即可修改路径,这里的路径都是测试的路径,一般默认安装路径在/var/lib/mysql下,真正配置按照真实路径配置. 1.修改/etc/sysconfig/selinux文件:#SELIN ...
- C++中随机数和不重复的随机数
随机数 int rand (); rand函数返回一个0-32767之间的一个伪随机整数,32767可以由宏RAND_MAX表示,该函数需要头文件<stdlib.h>. 常用的是如何生成一 ...
- web api :Action Results in Web API 2
原文:http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/action-results Web api 返回 ...
- oracle 监听启动、停止、查看命令
1.su oracle 然后启动监听器 1.lsnrctl start 会看到启动成功的界面; 1.lsnrctl stop 停止监听器命令. 1.lsnrctl status 查看监听器命令. ...