ホームページ >バックエンド開発 >PHPチュートリアル >PHP Webページキャッシュテクノロジーの利点とコード例の詳細な説明
1. ユニバーサル キャッシュ テクノロジー :
データ キャッシュ: ここでいうデータ キャッシュとは、データベース クエリの PHP キャッシュ メカニズムを指します。ページにアクセスするたびに、まず対応するキャッシュ データが存在するかどうかを検出します。存在しない場合は、接続してデータベースがデータを取得します。クエリ結果をシリアル化し、ファイルに保存します。将来的には、同じクエリ結果がキャッシュ テーブルまたはファイルから直接取得されます。
最も広く使用されている例は、結果 ID をテーブルにキャッシュし、次回同じキーワードを検索するときに最初にキャッシュ テーブルを検索する Discuz の検索機能です。 一般的な方法として、複数のテーブルを関連付ける場合、添付されたテーブルの内容を配列として生成し、メインテーブルのフィールドに保存し、必要に応じて配列を分解します。読み取りできるのは 1 つのテーブルのみであることです。欠点は、2 つのデータを同期するためにさらに多くの手順が必要になることです。データベースが常にボトルネックになります。速度のためにハードディスクを犠牲にすることがこの点の重要なポイントです。2. ページ キャッシュ:
ページにアクセスするたびに、まず対応するキャッシュされたページ ファイルが存在するかどうかを検出します。存在しない場合は、次のページに接続します。データベースを取得してデータを取得し、ページを表示すると同時にキャッシュページファイルを生成します。これにより、ページファイルは次回訪問時に有効になります。 (インターネット上のテンプレート エンジンと一部の一般的な PHP キャッシュ メカニズム クラスには通常、この機能があります)
3. 時間トリガー キャッシュ:
ファイルが存在するかどうかを確認し、タイムスタンプが有効期限の設定より小さい場合、ファイル変更タイムスタンプが現在のタイムスタンプから有効期限タイムスタンプを引いた値より大きい場合はキャッシュを使用し、それ以外の場合はキャッシュを更新します。
4. コンテンツトリガーのキャッシュ:
データが挿入または更新されると、PHP キャッシュ メカニズムが強制的に更新されます。
5. 静的キャッシュ:
ここでいう静的キャッシュとは、HTML や XML などのテキスト ファイルを直接生成し、更新があった場合に再生成する静的なキャッシュを指します。 . 、あまり変更のないページに適しているため、ここでは説明しません。
上記の内容はコード レベルのソリューションです。私は他のフレームワークを直接 CP していますが、変更するのが面倒です。内容は似ており、簡単に実行でき、さまざまな方法で使用できますが、次のコンテンツはサーバー向けです。エンドエンド キャッシュ ソリューション、非コード レベルでは、6 を達成するには複数の関係者の協力が必要です。メモリ キャッシュ:
Memcached は高性能の分散メモリ オブジェクト PHP キャッシュ メカニズム システムは、データベースの負荷を軽減し、動的アプリケーションでのアクセス速度を向上させるために使用されます。
7. PHP バッファ:
eaccelerator、apc、phpa、xcache がありますが、これらについては説明しませんので、自分で調べてください。 , これが存在することを知っていれば問題ありません
8. MYSQL キャッシュ:
これは非コード レベルとも見なされます。従来のデータベースではこの方法が使用されます。実行時間は以下、0.09xxxなど
9. リバースプロキシベースのWebキャッシュ:
Nginx、SQUID、mod_proxyなど(apache2以降は分割) mod_proxy と mod_cache の場合)
10. DNS ポーリング:
BIND はオープン ソースの DNS サーバー ソフトウェアです。これは非常に重要なことです。自分で検索して、これが存在することを知ってください。
chinacache などの大規模な Web サイトがこれを行っていることは知っています。簡単に言うと、これはマルチサーバーです。同じページまたはファイルが異なるサーバーにキャッシュされ、関連するページが自動的に解析されます。北と南に従って、サーバー内で。
用此三个php函数,就可以实现强大的功能。如果数据库查询量较大,可以用cache来解决这个问题。
首先,设定过期时间,如果要求缓存文件2个小时过期,就可以设定cache_time为3600*2;通过filectime()来获取缓存文件的创建时间(或 filemtime()获取修改时间),如果当前时间跟文件的创建时间超过限定的过期时间,就可以通过上面三个函数,首先从数据库中取出数据,然后开始缓存ob_start(),然后把要生成的页面的html代码写在缓存中,缓存结束后通过ob_get_contents()获取到缓存的内容,然后通过fwrite把缓存内容写到静态页面html。
如果未过期,直接读取cache中的静态页面即可,避免了大量的数据库访问。
<?php $_time =10; $dir="D:\\php\\"; function cache_start($_time, $dir) { $cachefile = $dir.'/'.sha1($_SERVER['REQUEST_URI']).'.html'; $cachetime = $_time; ob_start(); if(file_exists($cachefile) && (time()-filemtime($cachefile) < $cachetime)) { include($cachefile); ob_end_flush(); exit; } } function cache_end($dir) { $cachefile = $dir.'/'.sha1($_SERVER['REQUEST_URI']).'.html'; $fp = fopen($cachefile, 'w'); fwrite($fp, ob_get_contents()); fclose($fp); ob_end_flush(); } cache_start($_time, $dir); //以下是输出的内容,放在cache_start和cache_end两个方法之间 for ($i=0;$i<5;$i++) { echo $i; sleep(1); } cache_end($dir); ?>
相关学习推荐:PHP编程从入门到精通
以上がPHP Webページキャッシュテクノロジーの利点とコード例の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。