js文件一般应该不超过多大呢 能分到1160字节以下最好,这个数字是能放入单个tcp-ip包中的字节数 摘自《javascript高级程序设计》不过现实中一般都比这个大,但是一些小的功能最好还是以多个文件的形式。应该会快些。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我有个JS 200多K,自己做了个编码压缩程序,压到100K 把大文件分开多个小文件是否会快,我看未必。1.ie请求 *.js 是多线程还是单线程下载 我暂时还没有找到官方资源,就不做出结论但是,即使假设ie多线程下载,服务器对于客户端请求也有同域最大两线程并发限制http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec82.每个js文件下载,都必须经过 TCP通讯协议三次握手 (SYN, SYN-ACK, and ACK packets)。都要同时在客户端和服务器经过一个建立,初始化,连接,传送,销毁的过程.这些都需要耗费资源和时间。 当然在 HTTP/1.1 下,设置 keep-alive 可以改善这种情况.可以考虑开启iis或者apache的 gzip 压缩传送。 基本上压缩率70%-80%。不过这个是以牺牲服务器CPU为代价的。如果并发用户多,可能首字节到达时间会长一点点。优化这个东西,没有十分完美的,不是空间换时间,就是时间换什么什么的。能量守恒嘛。。 呵呵 对于 5k/s 下载速度的用户,很大, 因为 50/5 =10 秒对于 100k/s 下载速度的用户,很小, 因为 50/100=0.2秒现实生活中,接近(但是稍微超过前者)的用户不少 1.ie请求 *.js 是多线程还是单线程下载 我暂时还没有找到官方资源,就不做出结论----javascript权威指南 版4中说到:使用src性质从外部javascript文件读取脚本时,HTML解析器和javascript解释器都会停止下来等待文件装载完毕。从这里看应该是单线程的。我觉得大未必有不好,反正只需要下载一次。 re: cloudgamer(欢迎交流qq215754452)----javascript权威指南 版4中说到:使用src性质从外部javascript文件读取脚本时,HTML解析器和javascript解释器都会停止下来等待文件装载完毕。浏览器之所以这样做(在下载js文件期间,停止一切html的解析和渲染), 是因为在文件下载回来之前无法知道 js 文件中是否会包含 document.write 这种改变 dom 的语句。使用 defer 来告诉浏览器,"我的这段js代码不会包含document.write 啦, 你先放心解析和显示其他html啊。不用傻傻的等我,等你把html都处理完,再来处理我这里把"这个时候浏览器就会暂时跳过你的这段js(就好像他们原本就不存在一样),等他忙完其他那些乱七八糟的事情后才回过头来处理你的这个js,处理完你的这个js(就是包含defer属性的那些)后,浏览器想:“应该有onload事件”,于是 window.onload事件触发了。但是 firefox不支持 defer而且ie的怪脾气也让你在使用defer的时候要小心谨慎,就是带defer的js的执行顺序问题。下面这段代码足以说明问题<script defer>alert(1)</script><script defer>alert(2)</script><script defer>alert(3)</script><script defer>alert(4)</script><script defer>alert(5)</script><script defer>alert(6)</script><script defer>alert(7)</script>结果不会是 1234567,也不会是 7654321, 而是 .... 你自己试了才知道 首先,JS文件是不支持多线程下载的假设,有10个JS文件,如果装载10次用0.1秒的话,装载一个大文件可能只要0.08秒(假设的时间)因为,多发一个请求给服务器,对双方来说,都要耗一些处理时间如果是一个WEBGAME应用程序,建议JS文件尽量合并反正这些文件都要被用到但是,后期游戏开发中各个小功能,可以独立一个JS文件,到需要的时候,再运行时加载如果是一个门户类,,首页的JS要另外合并,其它页面的JS,可以按功能切分,因为,可能一个100K的JS,对一个页面来说,可能只用到其中的一行 请教jquery如何替换标签 关于一段js代码 怎样让不同日期显示不同的图片 求一简单的EXT刷新功能 我想学习javascript介绍我点比较好一点的出门书籍, 一个小问题?急! 如何判断一个窗口是不是弹出窗口? 在DOM中,怎么给一个TD设置onclick属性?(IE和MOZILLA) 为什么我的spreadsheet显示不了? 当光标移到图片上时怎把它变为手形? 用js操纵过vml的请帮忙,如何读写v:PolyLine的points? 讨论 js 不同ctrl实现多选
1.ie请求 *.js 是多线程还是单线程下载 我暂时还没有找到官方资源,就不做出结论
但是,即使假设ie多线程下载,服务器对于客户端请求也有同域最大两线程并发限制
http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec82.每个js文件下载,都必须经过 TCP通讯协议三次握手 (SYN, SYN-ACK, and ACK packets)。
都要同时在客户端和服务器经过一个建立,初始化,连接,传送,销毁的过程.
这些都需要耗费资源和时间。 当然在 HTTP/1.1 下,设置 keep-alive 可以改善这种情况.可以考虑开启iis或者apache的 gzip 压缩传送。 基本上压缩率70%-80%。
不过这个是以牺牲服务器CPU为代价的。如果并发用户多,可能首字节到达时间会长一点点。优化这个东西,没有十分完美的,不是空间换时间,就是时间换什么什么的。
能量守恒嘛。。 呵呵
对于 100k/s 下载速度的用户,很小, 因为 50/100=0.2秒现实生活中,接近(但是稍微超过前者)的用户不少
----
javascript权威指南 版4中说到:
使用src性质从外部javascript文件读取脚本时,HTML解析器和javascript解释器都会停止下来等待文件装载完毕。
从这里看应该是单线程的。我觉得大未必有不好,反正只需要下载一次。
----
javascript权威指南 版4中说到:
使用src性质从外部javascript文件读取脚本时,HTML解析器和javascript解释器都会停止下来等待文件装载完毕。浏览器之所以这样做(在下载js文件期间,停止一切html的解析和渲染), 是因为在文件下载回来之前无法知道 js 文件中是否会包含 document.write 这种改变 dom 的语句。使用 defer 来告诉浏览器,
"我的这段js代码不会包含document.write 啦, 你先放心解析和显示其他html啊。
不用傻傻的等我,等你把html都处理完,再来处理我这里把"这个时候浏览器就会暂时跳过你的这段js(就好像他们原本就不存在一样),等他忙完其他那些
乱七八糟的事情后才回过头来处理你的这个js,处理完你的这个js(就是包含defer属性的那些)后,浏览器想:“应该有onload事件”,于是 window.onload事件触发了。但是 firefox不支持 defer
而且ie的怪脾气也让你在使用defer的时候要小心谨慎,就是带defer的js的执行顺序问题。下面这段代码足以说明问题<script defer>alert(1)</script>
<script defer>alert(2)</script>
<script defer>alert(3)</script>
<script defer>alert(4)</script>
<script defer>alert(5)</script>
<script defer>alert(6)</script>
<script defer>alert(7)</script>结果不会是 1234567,也不会是 7654321, 而是 .... 你自己试了才知道
因为,多发一个请求给服务器,对双方来说,都要耗一些处理时间如果是一个WEBGAME应用程序,建议JS文件尽量合并
反正这些文件都要被用到
但是,后期游戏开发中各个小功能,可以独立一个JS文件,到需要的时候,再运行时加载如果是一个门户类,,首页的JS要另外合并,其它页面的JS,可以按功能切分,
因为,可能一个100K的JS,对一个页面来说,可能只用到其中的一行