ready.mobi で自分のウェブサイトをテストしたところ、
大失敗
すべてのページアセットは適切なEtagヘッダーを使用して、クライアント側のキャッシュを有効にし、将来のページの読み込みを高速化する必要があります
No Etag header found.
FixItページ は役に立たない-その問題を解決するにはどうすればよいですか? .htaccess?
追伸私のWebサイトは、Apacheを備えた外部仮想サーバーで実行され、CodeIgniter PHPフレームワークを使用しています。
PHPでは、ヘッダー関数を使用して、次のようにカスタムEtagを指定できます。
$et="11111"; // any custom etag value
header("ETag: \"".$et."\"",true);
問題のWebページを更新するときは、etag値が更新されていることを確認してください。手動のetag更新を行いたくない場合は、代わりに次のコードを使用できます。
$et=md5(time()); // 32-bit etag value calculated based on current time in seconds since year 1970.
header("ETag: \"".$et."\"",true);
フレームワークを使用しているため、他のheader()関数のPHPソースを調べて、上記のコードのいずれかを配置します。
すべてのページアセットは適切なEtagヘッダーを使用する必要があります
私のWebサイトは、Apacheで外部仮想サーバー上で実行されます
PHPを使用してページアセット(静的リソース:画像、スクリプト、css)のETag
ヘッダーを現実的に送信することはできません。それ以外の場合は静的で、リソースはPHPを介してすべてを遅くし、プロセッサーを集中的に使用するため、最初にETag
sを設定するオブジェクトを無効にします。
幸いなことに、Apacheには静的ファイル用のETag
機能が組み込まれています。Apacheではデフォルトで有効になっていますが、ホストはこの機能を無効にする傾向があります。ホストがサーバー設定のAccessOverride FileInfo
ディレクティブで許可していれば、FileETag
ディレクティブを使用して.htaccessで有効化/上書きできます。
.htaccess(またはサーバー設定):
# Set ETags based on the files i-node, last modified time and file size (default)
FileETag INode MTime Size
複数のサーバー間で負荷分散を行っている場合は、INode
キーワードを削除する必要があります。これはサーバーごとに異なるため、ファイルが実際に変更されていないときに異なるETag
sが送信されることになります。
これは、実際にETag
ヘッダーを設定するのに十分なはずです。ただし、ブラウザがCache-Control: no-store
ヘッダー(または同様のヘッダー)を送信してキャッシュをブロックしていないことも確認する必要があります。ブラウザーは、対応するIf-None-Match
ヘッダーを以前に送信したETag値とともに送信しません応答で。両方が必要です。 ETag検証は、通常のブラウザキャッシュと組み合わせて使用する必要があります。