現在の位置: ホーム> 最新記事一覧> キャッシュの防止:キャッシュコントロールとプラグマのヒントの設定

キャッシュの防止:キャッシュコントロールとプラグマのヒントの設定

M66 2025-05-28

Web開発では、ユーザーがアクセスするたびに最新のコンテンツを取得できるように、ブラウザまたはプロキシサーバーがページをキャッシュしないことを確認する必要がある場合があります。 PHPが提供するHeader()関数を使用して、HTTPヘッダーを送信してキャッシュ動作を制御できます。この記事では、キャッシュ()関数を使用してキャッシュコントロールプラグマを設定する方法を詳細に紹介し、キャッシュを効果的に防止します。

1.キャッシュを防ぐ必要があるのはなぜですか?

ブラウザキャッシュはパフォーマンスを改善し、サーバーの圧力を下げるように設計されていますが、一部のシナリオ(動的データ、ユーザーの個人情報、機密操作ページなど)では、キャッシュからロードするのではなく、毎回サーバーから最新のコンテンツを強制的に取得する必要があります。

キャッシュ制御が正しく設定されていない場合、ユーザーは期限切れのページが表示され、一貫性のないデータまたはエラーが操作されます。

2。header()関数を使用して、HTTPヘッダーを送信します

PHPのHeader()関数を使用すると、RAW HTTPヘッダー情報をブラウザに送信できます。これは、出力(Echo、Print、HTML)の前に呼び出される必要があります。

3.キャッシュ制御を設定します

キャッシュコントロールは、 HTTP/1.1によって導入された重要なヘッダーであり、キャッシュポリシーの定義に使用されます。キャッシュを無効にするには、次のコマンドを使用できます。

  • ストアなし:キャッシュは許可されていません。

  • ノーキャッシュ:毎回リビューさせる必要があります。

  • 必須の再評価:期限切れのリソースをサーバーに確認する必要があります。

サンプルコード:

 <?php
// キャッシュを無効にします
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
?>

2番目のHeader()はここで呼び出します、誤ったパラメーターは、同じ名前の前のヘッダーを上書きせずに追加する必要があることを意味します。

4.プラグマをセットアップします

Pragmaは、古いプロキシサーバーとの互換性のためのHTTP/1.0の古い方法です。

サンプルコード:

 <?php
header("Pragma: no-cache");
?>

キャッシュコントロールは主に現在使用されていますが、互換性のためにプラグマを追加することをお勧めします。

5。セットアップの有効期限が切れます

キャッシュコントロールプラグマに加えて、ヘッダーの有効期限を設定し、有効期限を過去の特定のポイントに設定し、コンテンツの有効期限を強制することもできます。

サンプルコード:

 <?php
header("Expires: Thu, 01 Jan 1970 00:00:00 GMT");
?>

6.完全な例

これが完全な防止防止例です。

 <?php
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Expires: Thu, 01 Jan 1970 00:00:00 GMT");

// 動的なコンテンツが出力されると仮定します
echo "<html><body>";
echo "<h1>現在の時刻: " . date('Y-m-d H:i:s') . "</h1>";
echo "<p>アクセス <a href=\"https://m66.net/demo\">m66.net サンプルページ</a></p>";
echo "</body></html>";
?>

7。注意すべきこと

  • 出力を送信する前にheader()を呼び出す必要があります。そうしないと、「既に送信されたヘッダー」エラーがスローされます。

  • さまざまなブラウザとプロキシサーバーには、キャッシュ命令のサポートがわずかに異なります。保険の場合、キャッシュコントロールプラグマ、および同時に期限切れになることをお勧めします。

  • キャッシュプラグインまたはCDNを使用する場合は、これらのレベルでアンチキャッシュポリシーを構成する必要もあります。