ホームページ  >  記事  >  バックエンド開発  >  PHPがキャッシュを生成できないのはなぜですか?

PHPがキャッシュを生成できないのはなぜですか?

PHPz
PHPzオリジナル
2023-05-06 22:00:07673ブラウズ

Web 開発では、キャッシュが頭の痛い問題になることがよくあります。キャッシュにより Web サイトのアクセス速度とパフォーマンスが向上しますが、データの適時性と正確性を確保するために、キャッシュを使用せずにリクエストごとにデータを再取得したい場合もあります。 Phpではキャッシュを生成しない効果を実現する方法がたくさんありますが、この記事ではそれらの方法を詳しく紹介します。

  1. Header ヘッダー情報の設定

Php では、Header ヘッダー情報を設定することでキャッシュを制御できます。次のコードは、Header ヘッダー情報を設定してキャッシュを無効にする方法を示しています。

<?php
  header("Expires: Tue, 26 Jul 1970 05:00:00 GMT");
  header("Cache-Control: no-cache, must-revalidate");
  header("Pragma: no-cache");
?>

上記のコードでは、Expires フィールドが過去の時刻に設定されているため、ブラウザはページの有効期限が切れたと認識し、キャッシュしない; Cache-Control フィールドと Pragma フィールドの両方が no-cache に設定されているため、ブラウザーはページをキャッシュしません。 Header ヘッダー情報を設定すると、キャッシュからデータを読み取るのではなく、リクエストごとにデータが再取得されます。

  1. session_cache_limiter 関数を使用する

session_cache_limiter 関数は、Php に付属する関数で、キャッシュを制御するために使用できます。次のコードは、session_cache_limiter 関数を使用してキャッシュを無効にする方法を示しています。

<?php
  session_cache_limiter("nocache");
  session_start();
?>

上記のコードでは、session_cache_limiter("nocache") 関数が呼び出されます。これは、ブラウザによるこのページのキャッシュが禁止されていることを意味します。 session_cache_limiter 関数を使用すると、echo 関数を介して出力されたコンテンツを含むすべての出力のキャッシュが禁止されます。

  1. OPcache モジュールを無効にする

OPcache は、Php によって公式に提供されるアクセラレータ モジュールで、コンパイルされたコードをキャッシュしてパフォーマンスを向上させることができます。ただし、OPcache を無効にして、リクエストごとにコードが再実行されて最新の結果が得られるようにしたい場合があります。次のコードは、OPcache モジュールを無効にする方法を示しています。

<?php
  ini_set("opcache.enable", 0);
?>

上記のコードでは、ini_set("opcache.enable", 0) 関数が呼び出され、OPcache モジュールが無効になっていることを示します。このメソッドを使用すると、リクエストごとにコードが確実に再実行されます。

  1. ETag の使用を避ける

ETag は、リソースが変更されたかどうかを判断するために HTTP プロトコルで使用される識別子です。ブラウザがリソースをリクエストすると、サーバーはリソースのコンテンツに基づいて ETag を生成し、それをブラウザに送信します。次回同じリソースがリクエストされると、ブラウザは前回取得した ETag をサーバーに送信し、サーバーはこの ETag を使用してリソースが変更されたかどうかを判断します。リソースが変更されていない場合、304 Not Modified ステータス コードが返され、ブラウザはキャッシュからリソースを取得します。キャッシュを避けるために、ETag の使用を避けることができます。例を示します:

<?php
  header("ETag: ");
?>

上記のコードでは、ETag を空の文字列に設定して、ブラウザーがリクエストするたびにサーバーがリソースを決定できないようにします。変更されているかどうかに関係なく、リソースのコンテンツは 304 Not Modified ステータス コードを返す代わりに直接返されます。これにより、リクエストごとにリソースが確実に再フェッチされます。

  1. キャッシュの削除

上記の方法に加えて、もう 1 つの実行可能な方法はキャッシュを削除することです。 Php では、unlink 関数を使用してファイルを削除できます。次に例を示します:

<?php
  $filename = "cache.txt";
  if(file_exists($filename)){
    unlink($filename);
  }
?>

上記のコードでは、unlink 関数を使用してファイル cache.txt を削除します。キャッシュを削除する必要がある場合は、この方法を使用してキャッシュ ファイルを削除できます。

概要

Web 開発では、キャッシュは重要な考慮事項です。キャッシュは Web サイトのパフォーマンスを効果的に向上させることができますが、データの適時性と正確性を確保するためにキャッシュを無効にしたい場合があります。この記事では、Php でキャッシュを無効にする 5 つの方法を紹介します。これには、Header ヘッダー情報の設定、session_cache_limiter 関数の使用、OPcache モジュールの無効化、ETag の使用の回避、キャッシュの削除が含まれます。上記の方法を使用すると、ページのキャッシュを効果的に制御し、リクエストごとにデータが確実に再フェッチされるようにすることができます。

以上がPHPがキャッシュを生成できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。