js文件一般应该不超过多大呢

cloudgamer 2007-01-06 11:40:43
请教有经验的人
如果太大了怎么办呢
...全文
2117 31 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangweiit 2009-02-03
  • 打赏
  • 举报
回复
首先,JS文件是不支持多线程下载的

假设,有10个JS文件,如果装载10次用0.1秒的话,装载一个大文件可能只要0.08秒(假设的时间)
因为,多发一个请求给服务器,对双方来说,都要耗一些处理时间

如果是一个WEBGAME应用程序,建议JS文件尽量合并
反正这些文件都要被用到
但是,后期游戏开发中各个小功能,可以独立一个JS文件,到需要的时候,再运行时加载

如果是一个门户类,,首页的JS要另外合并,其它页面的JS,可以按功能切分,
因为,可能一个100K的JS,对一个页面来说,可能只用到其中的一行
liubin0509 2007-03-03
  • 打赏
  • 举报
回复
mark
chaney 2007-03-01
  • 打赏
  • 举报
回复
3456721?是有点奇怪,
Go_Rush 2007-03-01
  • 打赏
  • 举报
回复
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, 而是 .... 你自己试了才知道

cloudgamer 2007-03-01
  • 打赏
  • 举报
回复
defer是怎样用的呢
圣殿骑士18 2007-02-26
  • 打赏
  • 举报
回复
1.ie请求 *.js 是多线程还是单线程下载 我暂时还没有找到官方资源,就不做出结论
----
javascript权威指南 版4中说到:
使用src性质从外部javascript文件读取脚本时,HTML解析器和javascript解释器都会停止下来等待文件装载完毕。
从这里看应该是单线程的。

我觉得大未必有不好,反正只需要下载一次。
cloudgamer 2007-02-25
  • 打赏
  • 举报
回复
一般经验是怎样的呢
Go_Rush 2007-02-08
  • 打赏
  • 举报
回复
对于 5k/s 下载速度的用户,很大, 因为 50/5 =10 秒
对于 100k/s 下载速度的用户,很小, 因为 50/100=0.2秒

现实生活中,接近(但是稍微超过前者)的用户不少
cloudgamer 2007-02-08
  • 打赏
  • 举报
回复
50k对于一般用户算不算大呢
Go_Rush 2007-02-05
  • 打赏
  • 举报
回复
把大文件分开多个小文件是否会快,我看未必。


1.ie请求 *.js 是多线程还是单线程下载 我暂时还没有找到官方资源,就不做出结论
但是,即使假设ie多线程下载,服务器对于客户端请求也有同域最大两线程并发限制
http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8

2.每个js文件下载,都必须经过 TCP通讯协议三次握手 (SYN, SYN-ACK, and ACK packets)。
都要同时在客户端和服务器经过一个建立,初始化,连接,传送,销毁的过程.
这些都需要耗费资源和时间。 当然在 HTTP/1.1 下,设置 keep-alive 可以改善这种情况.

可以考虑开启iis或者apache的 gzip 压缩传送。 基本上压缩率70%-80%。
不过这个是以牺牲服务器CPU为代价的。如果并发用户多,可能首字节到达时间会长一点点。

优化这个东西,没有十分完美的,不是空间换时间,就是时间换什么什么的。
能量守恒嘛。。 呵呵
jxl76219 2007-02-03
  • 打赏
  • 举报
回复
关注ing~~
圣殿骑士18 2007-02-02
  • 打赏
  • 举报
回复
gz
cloudgamer 2007-02-02
  • 打赏
  • 举报
回复
..
cloudgamer 2007-01-29
  • 打赏
  • 举报
回复
能说说应该怎样么
xdspower 2007-01-26
  • 打赏
  • 举报
回复
大小都有优势和不足的。
cloudgamer 2007-01-25
  • 打赏
  • 举报
回复
..
scalewingzip 2007-01-19
  • 打赏
  • 举报
回复
不知道
fusoft 2007-01-19
  • 打赏
  • 举报
回复
我有个JS 200多K,自己做了个编码压缩程序,压到100K
cloudgamer 2007-01-19
  • 打赏
  • 举报
回复
那应该怎么样呢
nobody@noone 2007-01-15
  • 打赏
  • 举报
回复
多个文件也不好吧,开开关关的
加载更多回复(11)

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧