检查是否允许通过php为当前域启用和启用ModPagespeed

时间:2012-06-19 09:28:01

标签: php .htaccess apache2 pagespeed mod-pagespeed

我正在试图弄清楚如何通过PHP检查当前域上是否启用了ModPagespeed。我编写了以下代码,但我对此解决方案并不完全满意。它有效,但它是一个缸。

摘录自.htaccess(提供不同的域名)Pagespeed filters

<IfModule pagespeed_module>
  ModPagespeed On
  ModPagespeedRewriteLevel PassThrough
  ...
  ModPagespeedEnableFilters combine_css
  ...
</IfModule>

摘自pagespeedtest.html:

...
<head>
...
  <!-- If combine_css filter is active, the following code should be combined -->
  <style type="text/css" media="all">@import url("/style1.css");</style>
  <style type="text/css" media="all">@import url("/style2.css");</style>
  <style type="text/css" media="all">@import url("/style3.css");</style>
...
</head>

检查此PHP代码是否启用或允许Pagespeed:

        $psturl = 'http://'. $_SERVER['HTTP_HOST'] .'/pagespeedtest.html';
        $pagespeed_is_active = TRUE;
        $pstheaders = get_headers($psturl, 1);
        if ($pstheaders['Content-Length'] == 960) {
          $pagespeed_is_active = FALSE;
        }

我使用PHP 5函数get_headers($url)获取Content-Length标头。我知道原始文件长度为960字节,所以我想如果没有执行优化,Content-Length在提供给客户端时应该是相同的。

这种方法还有其他选择吗?我不喜欢我在pagespeedtest.html上执行的补充HTTP请求,并且该解决方案强烈依赖于PageSpeed配置:如果 combine_css 过滤器将被禁用,我将得到 $ pagespeed_is_active == FALSE < / kbd>即使ModPagespeed是 On 并且允许。

必须通过不同的域验证替代解决方案,因为我可以在同一个.htaccess中禁用某些域。谢谢。

1 个答案:

答案 0 :(得分:2)

而不是检查Content-Length,您可以改为查找X-Mod-Pagespeed标题,只要“ModPageSpeed on”指令适用于域,它就会为您提供所需的答案。

除此之外,我认为您无法检查是否在请求中启用了PageSpeed。 PageSpeed的重点在于它作为输出过滤器运行:您生成页面,PageSpeed选择它并进行优化和重写。