【发布时间】:2012-06-20 01:31:27
【问题描述】:
我正在尝试弄清楚如何通过 PHP 在当前域上检查 ModPagespeed 是否已启用和允许。我已经编写了以下代码,但我对这个解决方案并不完全满意。它有效,但它是一个瓦罐。
摘自带有Pagespeed filters的.htaccess(服务于不同的域):
<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 即使 ModPagespeed 为 On 并被允许。
替代解决方案必须通过不同的域进行验证,因为我可以在同一个 .htaccess 中禁止某些域。谢谢。
【问题讨论】:
-
配置你的服务器,使用 mod_info:httpd.apache.org/docs/2.0/mod/mod_info.html
标签: php .htaccess apache2 pagespeed mod-pagespeed