能分到1160字节以下最好,这个数字是能放入单个tcp-ip包中的字节数  摘自《javascript高级程序设计》不过现实中一般都比这个大,但是一些小的功能最好还是以多个文件的形式。应该会快些。

解决方案 »

  1.   

    我有个JS 200多K,自己做了个编码压缩程序,压到100K
      

  2.   

    把大文件分开多个小文件是否会快,我看未必。
    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为代价的。如果并发用户多,可能首字节到达时间会长一点点。优化这个东西,没有十分完美的,不是空间换时间,就是时间换什么什么的。
    能量守恒嘛。。    呵呵
      

  3.   

    对于 5k/s   下载速度的用户,很大,  因为  50/5  =10 秒
    对于 100k/s 下载速度的用户,很小,  因为  50/100=0.2秒现实生活中,接近(但是稍微超过前者)的用户不少
      

  4.   

    1.ie请求 *.js 是多线程还是单线程下载 我暂时还没有找到官方资源,就不做出结论
    ----
    javascript权威指南 版4中说到:
    使用src性质从外部javascript文件读取脚本时,HTML解析器和javascript解释器都会停止下来等待文件装载完毕。
    从这里看应该是单线程的。我觉得大未必有不好,反正只需要下载一次。
      

  5.   

    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, 而是 .... 你自己试了才知道
      

  6.   

    首先,JS文件是不支持多线程下载的假设,有10个JS文件,如果装载10次用0.1秒的话,装载一个大文件可能只要0.08秒(假设的时间)
    因为,多发一个请求给服务器,对双方来说,都要耗一些处理时间如果是一个WEBGAME应用程序,建议JS文件尽量合并
    反正这些文件都要被用到
    但是,后期游戏开发中各个小功能,可以独立一个JS文件,到需要的时候,再运行时加载如果是一个门户类,,首页的JS要另外合并,其它页面的JS,可以按功能切分,
    因为,可能一个100K的JS,对一个页面来说,可能只用到其中的一行