因此,如果我使用 YUI 加载器(在 Yahoo 的服务器上)来提供 JavaScript,并且我告诉它使用组合,以便浏览器可以在单个请求中下载多个 YUI 小部件,这不会使浏览器变得更加困难浏览器缓存 JavaScript?
假设我有一个包含两个页面的站点,第一个页面使用 YUI 日历、对话框和树小部件,浏览器在来自 YUI 服务器的一个组合请求中获取它们。
下一页只使用 YUI 日历和对话框,而不使用树。从技术上讲,这是否意味着现在对雅虎服务器的请求不同,具有不同的查询字符串?这意味着这两个小部件将被再次下载,即使它们只是在第一页上使用过?
在这种情况下,向组合服务器发出一个请求是否更好,这将导致(在许多情况下)无法缓存的 JavaScript 的单个请求?或者对可以缓存的单个 YUI 组件的多个请求?
(YSlow 似乎没有提到关于这个问题的任何内容。)
最佳答案
最好使用组合服务。在第一次访问您的页面时,用户将受到 http 开销和与接收每个文件相关的处理开销的惩罚。此外,仍然存在浏览器对并发连接的限制问题,无论是否异步,非组合处理的文件都会导致页面加载时间更糟。虽然您将受益于后续页面上单独缓存的文件,但很可能每个页面都会有其他模块请求,这将构成更多的 http 请求(请记住,在考虑依赖关系后,一个不同的模块可能意味着多个模块请求)。所以它相当于第一页的优化网络 IO,然后是更大的有效负载,后续页面上的 http 开销最小,而第一页的网络 IO 非常未优化,然后内容较少,后续页面上的 http 开销更多。
如果您的站点包含许多启用 js 的页面,或者您试图以其他方式缓解初始模块加载问题,则可能有理由避免组合。但实际上,如果是从加载步骤中削减每最后 ms 的问题,A) 您可能会错过更多富有成效的优化,并且 B) 回答您的问题的唯一真正方法是通过分析。
解决您确定的情况的另一种方法是在构造时使用一些自定义汇总模块配置 YUI 实例,这些模块代表您使用的常见模块分组。这可能是一项非常复杂的工作,并且自然会引入维护步骤。
所以总而言之,可能没有您想象的那么担心,并且允许使用组合的默认行为很容易。任何明确的答案都将视具体情况而定,并基于对您的应用程序的分析。
关于javascript - YUI 的加载器组合选项不会破坏浏览器缓存吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3075128/