在我的构建中包括关键路径CSS提取

时间:2014-02-03 11:35:47

标签: html css inline-styles

在阅读critical path css后,我想知道如何将其嵌入到我的版本中。那里有没有完成的工具吗?该过程需要是自动化的,以避免内联CSS与其他CSS失去同步。

如果今天没有这样的工具,我可以看到我如何制作一个(比如一个咕噜的插件),将这个experimental script与PhantomJS一起使用,但重新发明轮子是没有意义的(如果已有一个。)

2 个答案:

答案 0 :(得分:4)

我有完全相同的想法 - 如果你还在寻找,我构建了我们想要的东西:

Critical Path CSS Generator。 (我没有最终使用你链接的工具,因为它错过了psuedo选择器,媒体查询,非-webkit前缀css规则等)。

更多文档即将推出,但基本上只需先安装PhantomJS然后再调用脚本:

phantomjs penthouse.js http://youSite.com/page1 yourSite.css > yourSite-criticalcss-page1.css
phantomjs penthouse.js http://youSite.com/page2 yourSite.css > yourSite-criticalcss-page2.css

您可以传入缩小的CSS以及未经过授权的CSS - 除了删除不匹配的选择器,规则(以及删除注释)之外,我不会修改CSS。

答案 1 :(得分:0)

使用IISpeed或Apache / Nginx PageSpeed模块

Google维护了一些适用于Apache和Nginx前端服务器的wonderful modules called PageSpeed。对于.NET上的用户,只需use IISpeed,即PageSpeed模块的IIS等价物。它是商业的,花费100美元,但从前端角度看它的功能是非常了不起的,并且(在许多其他东西中)处理使用Penthouse时的主要问题:处理变化/动态内容生成。

它的工作原理是将一些javascript注入任何页面的一些第一个访问者的头部,分析实际使用的css规则。然后,在几轮之后,它会收集这些css规则并将其作为内联css注入该页面的head中,供所有后续访问者使用。

这是完全自动的,适用于任何ASP.NET页面。然后,您可以避免在您希望加速的每个页面上手动运行Penthouse(如上所述),并记住保持最新的css(否则它会在某个时候过时,弄乱您的样式)。

对于内容大多是静态的网页,阁楼仍然很棒。