【问题标题】:What are the implications of a cached CSS file?缓存的 CSS 文件的含义是什么?
【发布时间】:2014-01-28 12:50:30
【问题描述】:

具体来说,浏览器是否只缓存样式表的文本内容——因此它不必再次从网络中获取它——或者它是否还在解析后缓存它所包含的 CSS 规则的内部表示,所以既不需要获取也不需要解析缓存文件?

如果只缓存文本内容,缓存样式表比内联样式表有什么好处(不能缓存的地方)?

【问题讨论】:

  • 如果浏览器缓存了渲染视图,我敢打赌他们需要几 GB 的磁盘来存储一天的数据。而且缓存资产毫无意义。
  • 对不起,如果这是您的理解。对于“内部表示”,我指的不是渲染视图,而是包含解析的 CSS 规则的数据结构。我相应地编辑了问题。

标签: css caching browser inlining


【解决方案1】:

缓存旨在通过将通常较慢的网络下载替换为通常快速的本地文件读取来减少加载时间。因此,它是一个通用的解决方案(您可以缓存任何类型的资产,从 HTML 到 CSS、JavaScript、PDF、Excel ......),它可以节省大量时间(对于非常慢的网络,通常是几秒钟,甚至几分钟)。它还可以很好地处理动态 HTML。

您提出的是一种非常具体的缓存解决方案,适用于非常具体的数据集(HTML 文档的节点以及适用于它们的 CSS 规则),通常需要几毫秒的时间来处理,并且由于 JavaScript 可以不断变化。它看起来真的很难实现,它会让动态网站感到困惑(当页面加载时,每个人都希望获得初始的 HTML 状态,而不是你上次所做的任何事情),而且几乎没有任何好处。我不知道有任何浏览器甚至尝试过它。确实有 JavaScript 代码的 JIT 编译器,但没有类似的东西。

如果只缓存文本内容,缓存a有什么好处? 样式表过度内联(无法缓存的地方)?

我想说缓存本身就是一个有效的好处,不是吗?生成内联 CSS 对网站管理员来说意味着更多的工作(您要么需要编写注入 CSS 文件的服务器端代码,要么享受甚至没有它们的维护混乱)。它还会增加 HTML 文档的大小。

【讨论】:

  • 对不起,如果我的语言令人困惑。我不建议缓存 HTML 节点及其 CSS 样式,正如您已经提到的那样,这将毫无用处。我只是想知道浏览器是否记得样式表中的“内容”而不是未处理的状态。就像您无需再次阅读即可记住一本书的情节(即使您阅读速度非常快)。
  • 嗯...不管细节是什么,解析 CSS 并不需要花费太多时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-28
  • 1970-01-01
  • 1970-01-01
  • 2018-09-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多