0

この質問を作成します(ETagとヘッダーの有効期限)2つの異なる目的を果たすため、ExpireヘッダーとeTagヘッダーの両方が必要であることを理解しました。私はWordpressプラグインに取り組んでいるので、サーバーがどのように構成されるかわからないので、eTagがオンになっているかどうかを確認する方法を考えていました。私はそれをできた

header( 'Content-Type: text/css' );

// Aggressive caching to save future requests from the same client.
$etag = '"' . md5( __FILE__ . $_GET['my-css-var'] ) . '"';

header( 'ETag: ' . $etag );
header( 'Expires: ' . gmdate( 'D, d M Y H:i:s', time() + 31536000 ) . ' GMT' );
header( 'Cache-Control: public, max-age=31536000' );

if ( empty( $_SERVER['HTTP_IF_NONE_MATCH'] ) || $etag != stripslashes( $_SERVER['HTTP_IF_NONE_MATCH'] ) ) {
// return the CSS
} else {
    // Not modified!
    status_header( 304 );
}

これは、EtagがオフとEtagがオンの両方で機能しますか、またはETagがオフの場合にエラーが発生しますか?

4

1 に答える 1

1

カスタムヘッダーを機能させるために、WebサーバーでEtag処理をオンにする必要はありません。それは引き続きクライアントに送信されます。

サーバーでEtagsがオフになっている場合、Webサーバーは静的ファイル(.jpg、.css、.jsなど)のEtagsを生成しません。

Apacheでは、次の設定でEtagsの設定を解除できます。

<IfModule mod_headers.c>
  Header unset ETag
</IfModule>

FileETag None

これはApacheに固有であり、他のWebサーバーの構文は異なるため、スクリプトで確認するのは困難です。ただし、設定されている場合は、カスタムセットのEtagが削除されます。

ただし、これはApacheのデフォルトではありません。

あなたの質問に答えるために、Etagsがオンになっているかどうかを確認することはできません。しかし、あなたの目的のために私は心配しません。

于 2012-07-24T08:01:13.240 に答える