2013-04-26 73 views
8

我已經在我們的服務器上安裝了mod_pagespeed,但它不會在我們的網站oktoberfest.it上結合我的CSS和JS。很明顯,我在pagespeed.conf文件的過濾器中激活了combine_css,combine_javascript和PassThrough。mod_pagespeed將不會結合CSS和JS

我也讀過mod_pagespeed不能合併包含CSS3指令的CSS文件,但是在我的Apache日誌文件中,在啓用LevelLog調試之後,當然沒有關於合併失敗的任何錯誤或信息。 CSS既不是JS。

我試過:

  1. READD CoreFilters
  2. 重新啓動Apache的
  3. 刪除的mod_pagespeed緩存,觸摸 /var/mod_pagespeed/cache/cache.flush
  4. 停用所有過濾器除了combine_css和combine_javascript
  5. 我已檢查.config文件中指示的文件夾是否爲CHMOD 777

我不知道現在該做什麼。我完成了一些想法。我真的希望這個mod_pagespeed功能可以與我們的網站一起工作,我們有40個來自我們無法管理的插件的CSS和JS請求。

你建議我做什麼?

回答

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相關的消息。

提取相關失敗的最佳解決方法是在您的環境允許的情況下使用ModPagespeedLoadFromFile指令。另請參閱this FAQ entry,它解釋了這個問題。您也可以嘗試更新至beta release 1.4.26.1或更高版本,其中包括常見的回送提取錯誤的解決方法。

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=""標籤成的PageSpeed doesn't像CSS鏈接。所以它會被忽略。

但是如果Javascript調用ID,它會「導致」插件的問題,但通常沒有人會這樣做。所以你會安全的。

+3

嚴格有關WordPress的,我可以確認這是一種有效的解決方案。 – vulgarbulgar 2015-04-16 17:29:21

0

從版本1.12.34.1開始,您可以允許css組合的ID,查看documentation

由於WordPress的增加-css任何ID,你可以再補充:

阿帕奇:

ModPagespeedPermitIdsForCssCombining *-css 

Nginx的:

pagespeed PermitIdsForCssCombining *-css;