combo 插件发送规则问题 #251

Closed
sofish opened this Issue Jul 4, 2012 · 2 comments

Projects

None yet

2 participants

@sofish
sofish commented Jul 4, 2012

目前 combo 插件的发送规则是 hack seajs 中的 _load 方法,也就是说每个 sea.use() 都会发出一个请求。如果在同一个 js 中写有多个 sea.use,那么请求数就会太多了。

@kangpangpang 辉哥之前的 $Loader.use 解决了请求发送的问题,combo 支持一下这种功能,按时间算?!

@lifesinger
Member

@sofish 按时间算的那个感觉不妥,会人为的导致页面渲染速度变慢,比如:setTimeout 100ms,收集这 100 ms 内的请求统一发送,这会带来两个问题:

  1. 无论怎么优化,至少得延迟 100ms
  2. 每次请求的 combo 地址有可能不一样,比如用户机器好点的,可以 100ms 内收集了 20 个请求,如果用户电脑很慢,很可能 100ms 内只收集了 5 个请求,不固定不稳定,这对缓存很不利的

目前的规则,当时有考虑一种优化是:

  1. dom ready 之前的 use,都统一延迟到 dom ready 时发送
  2. dom ready 之后的 use,依旧每次都发送(看 use 什么,如果是已加载的,也不会新发请求)

但目前没有感觉到必要性。以前性能优化有个误区:链接数越少越好,实际上并非如此。IE6 的占比目前在国内已经不是最高,链接数限制目前其他浏览器都有 6-8 个,适量并发反而能提升页面性能。而且一般页面中的 use 不会很多,支付宝的场景下,页面中 use 的经常已经是页头加载好了的,不会增加请请求数。@sofish 参考下。

@lifesinger lifesinger closed this Jul 5, 2012
@sofish
sofish commented Jul 5, 2012

@lifesinger OK, THX

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment