我试图弄清楚如何检查ModPagespeed是否已通过 PHP 在当前域上启用和允许。我已经编写了以下代码,但我对这个解决方案并不完全满意。它有效,但它是一个瓦罐。
使用Pagespeed 过滤器摘录 .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 配置:如果过滤器将被禁用,即使 ModPagespeed 被允许combine_css,我也会得到。$pagespeed_is_active == FALSEOn
必须通过不同的域验证替代解决方案,因为我可以在同一个 .htaccess 中禁止某些域。谢谢你。