10

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

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

我试图:

  1. 读取核心过滤器
  2. 重启阿帕奇
  3. 使用 touch /var/mod_pagespeed/cache/cache.flush 删除 mod_pagespeed 缓存
  4. 停用除 combine_css 和 combine_javascript 之外的所有过滤器
  5. 我检查了 .config 文件中指示的文件夹是 CHMOD 777

我不知道现在该怎么办。我已经完成了想法。我真的希望这个 mod_pagespeed 功能与我们的网站一起使用,我们有 40 个来自我们无法管理的插件的 CSS 和 JS 请求。

你建议我怎么做?

4

3 回答 3

20

对于 CSS 组合

当您使用 Wordpress 时,您需要在 function.phpWordpress 中添加一个功能。

function remove_style_id($link) {
        return preg_replace("/id='.*-css'/", "", $link);
}
add_filter('style_loader_tag', 'remove_style_id');

Wordpress 将ID=""标签写入 pagespeed 不喜欢的 css 链接。所以会被忽略。

但是如果 Javascript 调用 ID,它“可能”会导致插件出现问题,但通常没有人会这样做。这样你就安全了。

于 2015-02-10T02:42:52.533 回答
8

从版本 1.12.34.1 开始,您可以允许用于 css 组合的 ID,请查看文档

当 wordpress 添加-css到任何 ID 时,您只需添加:

阿帕奇:

ModPagespeedPermitIdsForCssCombining *-css

Nginx:

pagespeed PermitIdsForCssCombining *-css;
于 2018-01-20T12:37:59.297 回答
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 无法在内部获取这些资源。发生这种情况的原因有很多,但请在您的 apacheerror_log中查找与 SERF 相关的消息。

获取相关失败的最佳解决方法是在ModPagespeedLoadFromFile您的环境允许的情况下使用该指令。另请查看此常见问题解答条目,它解释了问题。您还可以尝试更新到beta 版本 1.4.26.1或更高版本,其中包括常见环回获取错误的解决方法。

于 2013-04-30T21:25:34.370 回答