我在我们的服务器上安装了mod_pagespeed,但它不会在我们的网站oktoberfest.it上组合我的CSS和JS。显然我已经在pagespeed.conf文件中的过滤器中激活了combine_css,combine_javascript和PassThrough。
我还读过mod_pagespeed无法组合包含CSS3指令的CSS文件,但在我的Apache日志文件中,当然启用LevelLog调试后,没有任何关于组合失败的错误或信息。 CSS既不是JS也不是。
我试过:
我现在不知道该怎么办。我完成了想法。我真的希望这个mod_pagespeed功能适用于我们的网站,我们有40个来自插件的CSS和JS请求,我们无法管理。
你建议我做什么?
答案 0 :(得分:17)
适用于CSS组合
当您使用Wordpress时,您需要添加一个功能
Wordpress的function.php
。
function remove_style_id($link) {
return preg_replace("/id='.*-css'/", "", $link);
}
add_filter('style_loader_tag', 'remove_style_id');
Wordpress将ID=""
标签写入了pagepeed不喜欢的css链接。所以它会被忽略。
但是如果Javascript调用了ID,它“可能”会导致插件出现问题,但是经常没有人会这样做。所以你会安全的。
答案 1 :(得分:5)
似乎存在一些阻止mod_pagespeed合并您网站资源的问题。首先,许多CSS文件都有id
个属性,这会阻止combine_css
过滤器运行。 HTML通常希望元素具有单个id
属性,如果组合这些CSS文件,则不清楚应该是什么。
这并不能解释为什么mod_pagespeed似乎没有重写页面上的任何CSS或JS资源。 mod_pagespeed能够重写HTML,例如www.oktoberfest.it/?ModPagespeedFilters=collapse_whitespace能够从页面中删除空格。问题很可能是mod_pagespeed无法在内部获取这些资源。这可能由于多种原因而发生,但请查看您的apache error_log
以获取与SERF相关的消息。
与fetch相关的失败的最佳解决方法是在您的环境允许的情况下使用ModPagespeedLoadFromFile
指令。另请查看this FAQ entry,它解释了问题。您还可以尝试更新到beta release 1.4.26.1或更高版本,其中包括针对常见环回获取错误的解决方法。
答案 2 :(得分:1)
您可以在版本1.12.34.1中允许使用css组合ID,查看documentation。
由于wordpress将-css
添加到任何ID,您只需添加:
的Apache:
ModPagespeedPermitIdsForCssCombining *-css
Nginx的:
pagespeed PermitIdsForCssCombining *-css;