【问题标题】:dynamic CSS - multiple stylesheets vs single dynamic css (rendering performance)动态 CSS - 多个样式表与单个动态 CSS(渲染性能)
【发布时间】:2013-11-14 22:26:22
【问题描述】:

我正在编写支持“插件”作为外部“显示”的网站(自定义全屏 HTML 内容,由网站引擎和客户端提供的 js 驱动程序管理,使用引擎 API 提供的与其他客户端交互)由自定义驱动js、html和css。主题将被组织到外部存储库中,将有一个包含主题包含的文件列表的 .theme 文件,以便将它们加载并存储在 IndexedDB 中,以便更快地在本地使用 - 以及客户端 HTML 的 css 规则

关键是客户端正在访问和更改 css 规则以调整响应式布局。更改主要布局 css 的文本会导致重新加载样式并丢失 js 所做的所有规则更改。客户端是动态加载的,因此这些更改可能随时发生。

所以我需要选择以下选项之一:

  1. 使用 CSS 文本模块 - 加载新客户端后 - 主要 CSS 文本将通过添加新内容 (innerHTML) 并在所有客户端上调用 cssreload 函数来扩展

  2. 使用多个样式表并为客户端提供 API 以仅修改自己的样式表以避免在新客户端注入后重新加载。

哪一个会取得更好的性能?客户的平均数量是 10 - 20。 是否有我没有想到的另一个更好的解决方案? 多个样式表似乎更轻量级(至少对我而言),因为它们不需要重新加载 js,但是我不确定与解决方案相比,如此大量的不同样式表是否不会导致站点重新渲染的性能大幅下降单个巨大的样式表。

【问题讨论】:

    标签: javascript css responsive-design stylesheet styling


    【解决方案1】:

    根据我所阅读的所有内容,最佳做法是使用一个样式表而不是多个样式表,除非无法避免。这是因为,如今,网络浏览中最慢的部分是发出多个请求。如果您可以在一个请求中加载所有 CSS,即使文件很大,这通常也比加载多个 CSS 文件要快。

    有一个great SO answer 和对此的解释。可能值得一读。

    【讨论】:

    • css 是从 localStorage 加载的,而不是 web,网站在第一次运行时正在下载内容,它是离线 webapp,这完全是关于 cpu 性能,而不是网络,这就是为什么至少对我来说答案并不那么明显跨度>
    • 啊,我看错了你的问题。这可能是一个清洗,但我仍然犯了更少的请求。