mod_pagespeed不会组合CSS和JS

时间:2013-04-26 14:53:04

标签: wordpress mod-pagespeed

我在我们的服务器上安装了mod_pagespeed,但它不会在我们的网站oktoberfest.it上组合我的CSS和JS。显然我已经在pagespeed.conf文件中的过滤器中激活了combine_css,combine_javascript和PassThrough。

我还读过mod_pagespeed无法组合包含CSS3指令的CSS文件,但在我的Apache日志文件中,当然启用LevelLog调试后,没有任何关于组合失败的错误或信息。 CSS既不是JS也不是。

我试过:

  1. 已阅读CoreFilters
  2. 重启Apache
  3. 使用触摸删除mod_pagespeed缓存 /var/mod_pagespeed/cache/cache.flush
  4. 停用除combine_css和combine_javascript
  5. 之外的所有过滤器
  6. 我检查.config文件中指示的文件夹是CHMOD 777
  7. 我现在不知道该怎么办。我完成了想法。我真的希望这个mod_pagespeed功能适用于我们的网站,我们有40个来自插件的CSS和JS请求,我们无法管理。

    你建议我做什么?

3 个答案:

答案 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;