2

PHPを介して現在のドメインでModPagespeedが有効になっていて許可されているかどうかを確認する方法を理解しようとしています。私は次のコードを書きましたが、この解決策に完全には満足していません。それは動作しますが、それはクロックです。

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の構成に強く依存しています。combine_cssフィルターが無効になると$pagespeed_is_active == FALSE、ModPagespeedがOn許可されている場合でも取得されます。

これとまったく同じ.htaccessで一部のドメインを禁止できるため、別のソリューションを異なるドメインで検証する必要があります。ありがとうございました。

4

1 に答える 1

2

をチェックするContent-Length代わりに、ヘッダーを探すことができX-Mod-Pagespeedます。これにより、ドメインに「ModPageSpeed on」ディレクティブがある限り、探している答えが得られます。

それ以外は、リクエスト内からPageSpeedが有効になっているかどうかを確認する方法はないと思います。PageSpeedの要点は、出力フィルターとして実行されることです。ページを生成すると、PageSpeedがそれを取得し、最適化と書き換えを行います。

于 2012-06-19T17:31:27.100 に答える