在阅读critical path css后,我想知道如何将其嵌入到我的版本中。那里有没有完成的工具吗?该过程需要是自动化的,以避免内联CSS与其他CSS失去同步。
如果今天没有这样的工具,我可以看到我如何制作一个(比如一个咕噜的插件),将这个experimental script与PhantomJS一起使用,但重新发明轮子是没有意义的(如果已有一个。)
答案 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(否则它会在某个时候过时,弄乱您的样式)。
对于内容大多是静态的网页,阁楼仍然很棒。