【问题标题】:Aggressive Caching vs Combining of Javascript files for an Intranet SiteIntranet 站点的激进缓存与 Javascript 文件组合
【发布时间】:2011-12-31 11:13:41
【问题描述】:

我正在努力提高我公司内网页面的页面性能。我们希望(动态地)组合我们的 javascript 文件并将它们缓存 30 天以上。该页面在所有人登录时启动。

我的一位同事问,如果我们已经将 JS 文件缓存了一个月,是否值得花时间合并这些文件。他对两者都做犹豫不决,因为组合工具是服务器端的,不能在我们的桌面上运行,需要一个有点 hacky 的解决方法。

我一直在做一些研究,我看到的大多数性能建议都是针对外部网站的。由于我们处于一个封闭的系统中,一旦每个人的缓存都准备好了,我们似乎不会从合并文件中获得太多好处。合并文件会给我们带来什么激进的缓存不会?

如果这有什么不同的话,我们使用的是 IE8。

【问题讨论】:

    标签: javascript performance caching intranet


    【解决方案1】:
    1. 将所有 JavaScript 文件合并到一个大文件中(从而最大限度地减少向服务器发出的请求数),并将其名称设置为“application_234234.js”之类的名称;该数字代表您上次更改文件的时间,并将帮助浏览器知道它是一个新文件(因此当您更改它时没有缓存)。
    2. 添加一个 Expires 或一个 Cache-Control 标头(将其设置在很远的将来)。由于每次修改文件名都会更改,因此您不必担心。
    3. 最后同样重要的是,压缩和 gzip JavaScript 文件。

    这些是一些重要的建议,但要了解有关最佳实践的更多信息,请访问:http://developer.yahoo.com/performance/rules.html

    【讨论】:

    • 我已经尝试练习这些了。我们正在使用在我们的 Web 服务器上运行的运行时组合工具来根据请求组合文件。我的团队对在部署前合并/缩小文件有很多反对意见,因为我们必须使用的工具使我们很难使用它进行本地开发。
    • 我建议您的团队也应该设置“开发”环境,在该环境中文件不会被缩小或压缩成一个文件。我想这会让你们的生活更轻松。
    【解决方案2】:

    拥有多个 JavaScript 文件最显着的影响是呈现页面所需的时间。每个脚本标签都是单独处理的,会增加整个渲染过程的时间。

    一个很好的答案可以在这里找到@multiple versus single script tags

    如果我们谈论的是大量脚本,那么您可能会看到渲染时间有所改善;如果它只是两个或三个文件,那么一旦文件被缓存,它可能不会带来明显的差异。

    我建议在这两种情况下测试页面呈现时间,看看你在你的情况下看到了多少改进,然后根据这些信息做出决定。

    作为一个有用的例子,这里有一些来自Xpedite 的统计数据(我不久前创建的运行时缩小工具);请注意从加载到准备好组合脚本与未组合脚本的时间差异。

    【讨论】:

    • 我已经找到了所有这些,我很想简化 Javascript 的加载,但是页面上有几十个内联脚本标签,需要进行相当大的重写。我的问题是关于多个脚本标签与一个脚本标签的影响,如果他们所指的脚本已经被缓存。
    • @Zoho - 即使脚本已被缓存,解析 JS 所需的时间仍然适用;如前所述,相关 SO 问题的链接提供了更多详细信息。因此,您的问题的答案是使用更多脚本标签呈现页面可能需要更多时间。
    • 我认为解析多个 js 文件会更慢,即使它们被缓存,我也没有什么可引用的。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-08
    • 2015-06-21
    相关资源
    最近更新 更多