【问题标题】:Why doesn't Facebook combine its CSS/JS files?为什么 Facebook 不合并其 CSS/JS 文件?
【发布时间】:2011-11-26 12:44:03
【问题描述】:

我很好奇为什么 Facebook 开发人员选择不将他们的脚本和样式表合并到单个文件中。相反,它们是通过 CDN 按需加载的。

Facebook 显然是一个非常复杂的应用程序,我可以理解这种模块化如何使 Facebook 更易于维护,但通常的优化建议是否仍然适用(尤其是考虑到它的高使用率)?

或者,他们使用 CDN 的事实是否避免了拥有大量小脚本/样式通常对性能造成的影响?

【问题讨论】:

  • 我认识的大多数 Facebook 用户一直都在上网,所以脚本和样式表从哪里下载并不重要,因为它们会在浏览器缓存中。

标签: javascript css performance facebook cdn


【解决方案1】:

总之BigPipe。他们将页面划分为“pagelet”,每个页面在其服务器上单独处理并并行发送到浏览器。基本上几乎所有内容(CSS、JS、图像、内容)都是延迟加载的,因此它归结为一堆小文件。

【讨论】:

【解决方案2】:

也许他们认为您访问 Facebook 的频率比清除浏览器缓存的频率更高。

【讨论】:

    【解决方案3】:

    他们可能会遇到这样的情况,即能够在不同时间(针对不同页面或针对不同用户的不同应用程序配置)向浏览器提供不同的 JS 文件组合所节省的费用比减少的 HTTP 请求所节省的费用更大将所有文件合并为一个的开销。

    如果浏览器在任何给定时间只执行总 JS 代码库的一小部分,那么这将是有意义的。因为他们有这么多不同的用户,以及为这些用户以不同配置运行的不同应用程序的不同部分,所以可以说是这种情况。

    其次,这些文件只需要下载一次,然后浏览器不会再次请求它们,直到它们发生变化或缓存过期,所以只有第一次访问才能真正受益于一体式风格。是的,在世界各地拥有许多边缘位置的高级 CDN 肯定会有所帮助。

    【讨论】:

    • 感谢您的回复,接受的答案中的 BigPipe 链接提供了 Facebook 自己的准确解释。您的回答也很有用,但不幸的是我只能接受一个。再次感谢
    猜你喜欢
    • 1970-01-01
    • 2015-10-28
    • 2019-09-17
    • 2021-05-02
    • 1970-01-01
    • 2012-01-16
    • 2010-11-27
    • 2012-08-04
    • 1970-01-01
    相关资源
    最近更新 更多