我正在试图弄清楚如何通过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中禁用某些域。谢谢。
答案 0 :(得分:2)
而不是检查Content-Length
,您可以改为查找X-Mod-Pagespeed
标题,只要“ModPageSpeed on”指令适用于域,它就会为您提供所需的答案。
除此之外,我认为您无法检查是否在请求中启用了PageSpeed。 PageSpeed的重点在于它作为输出过滤器运行:您生成页面,PageSpeed选择它并进行优化和重写。