nemo64/critical_css

TYPO3 的关键 CSS 内联渲染

安装: 8

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 3

分支: 1

开放问题: 0

类型:typo3-cms-extension

dev-master 2018-12-11 18:20 UTC

This package is auto-updated.

Last update: 2024-09-12 07:32:14 UTC


README

Build Status Latest Stable Version Total Downloads Monthly Downloads License

critical css typo3 扩展

此扩展可自动检测并内联关键 CSS 定义。

工作原理

此扩展的实现不使用浏览器来检查特定的视口大小。相反,它使用你可以在网站上任何位置放置的标记。例如,TypoScript 在第二个 tt_content 元素之后放置它。

然后,此扩展将使用复杂的正则表达式来创建一个统计,记录直到标记为止使用的元素/属性/类/ID。然后使用 sabberworm/php-css-parser 解析所有 CSS 文件,并将所有 CSS 选择器与之前创建的统计相匹配和缩减。

即使面对如 bootstrap 这样的大型框架,整个过程也非常快速,最终只产生 2-3 kb 的内联 CSS。

你应该知道的事情

  • 如果“页脚以下”标记不存在,则扩展将不执行任何操作
  • 内联 CSS 只是猜测你需要的内容。这里没有浏览器选择器匹配工作。尽管如此,猜测非常准确...
  • 由于它们对于(希望最多)1 秒内获取真实 CSS 的等待时间并不重要,所有动画/过渡以及悬停/聚焦效果都从内联 CSS 中移除
  • 还会下载和内联外部样式表(待创建一个好的异常创建方法)
  • 由于通过用户代理提供不同的字体,google fonts 当前是硬编码的异常,不进行内联

我应该何时考虑使用此扩展(或替代品,我不做评判)

  • 这应该是你做的最后一个优化之一
  • 确保没有其他内容会阻塞首次绘制,否则此优化将无效
  • 确保你的网站不是通过 php 交付的,因为这将可能是你可以做的最大的性能提升。我推荐 lochmueller/staticfilecache,因为它没有平台依赖,并且非常透明。但其他策略也很好。

贡献

运行测试

运行测试套件的最简单方法是安装 docker 并使用以下命令

  • composer db:start,这将启动一个用于 mysql 数据库的 docker 图像。这对于功能测试是必需的。
  • composer test 运行单元和功能测试套件。你可以分别运行它们,使用 test:unittest:functional。你也可以使用 composer test:unit -- --filter External 使用过滤器。
  • composer db:stop 将停止并删除数据库。

当然,如果你有本地数据库,你也可以在没有 docker 的情况下运行它们,但那时你必须手动编写测试命令 ;)