1. キャッシュとは何ですか? 1. キャッシュは、高速アクセスを容易にするために頻繁に使用されるキャッシュ メモリの特別なメモリ サブシステムです。 2. キャッシュの分類
1. Web アプリケーションに基づくシステム アーキテクチャ図
2. システム アーキテクチャのさまざまなレベルで速度を向上させるためアクセスを増やすと、キャッシュが存在する可能性があります
オペレーティング システムのディスク キャッシュ - > ディスクの機械的操作を削減します
データベース キャッシュ - > ファイル システムの I/O を削減します
アプリケーション キャッシュ - >
Web サーバーのキャッシュ - > アプリケーション サーバーのリクエストを削減します
クライアント ブラウザのキャッシュ - > Web サイトへのアクセスを削減します
-
3. オペレーティング システムのキャッシュ
1. ファイル システムによって提供されるディスク キャッシュ: 2. アプリケーションがファイル システムを介してディスク ファイルにアクセスすると、オペレーティング システムはファイル コンテンツをディスク キャッシュから読み取ります。ファイルの読み取り速度 3. ディスク キャッシュはオペレーティング システムによって自動的に管理され、通常は手動による介入は必要ありません。ただし、オペレーティング システムがディスク キャッシュとして機能するためにできるだけ多くのメモリを使用できるように、十分な物理メモリを確保する必要があります。ファイルの読み取り速度を高速化します
4. 特殊なアプリケーションは、ファイル システムのディスク キャッシュをバイパスし、ディスク パーティションを独自に実装します
Oracle の raw デバイス (ベア デバイス) – ファイル システムを直接放棄します
MySQL の InnoDB: innodb_flush_method = O_DIRECT 4. データベース キャッシュ- 1. データベースは通常、エンタープライズ アプリケーションのコア部分です。システム
データベースに保存されるデータの量は通常非常に大量です
データベースクエリ操作は通常非常に頻繁で、場合によっては非常に複雑です 上記の理由により、データベースクエリにより非常に頻繁なディスクI/Oが発生します読み取り操作により CPU が強制的にハングします。お待ちください。データベースのパフォーマンスが非常に低いです 2. キャッシュ戦略 - a. クエリ キャッシュ
- は、クエリ結果セットをキャッシュするためのキー値として SQL を使用します
クエリに含まれるテーブル レコードが変更されると、キャッシュは自動的に削除されます
適切なクエリ キャッシュを設定すると、データベースのパフォーマンスが大幅に向上します クエリ キャッシュは大きくないほど良く、大きすぎるクエリ キャッシュは、無駄なメモリ。 QMysql: Query_cache_size = 128m B、データバッファ データバッファはメモリ内のデータベースデータのコンテナです データバッファのヒット率はデータベースのパフォーマンスを直接決定します 大きいほどデータ バッファーは、多ければ多いほど優れています
MySQL の InnoDB バッファー: innodb_buffer_pool_size = 2G MySQL では、サーバーの物理メモリの 60 ~ 80% までバッファー プールを開くことをお勧めします 5. アプリケーション キャッシュ- 1. オブジェクト キャッシュ
- は、Hibernate などの O/R マッピング フレームワークによって提供され、ビジネス コードを明示的にプログラミングすることなく、データベース クエリ結果のきめ細かいキャッシュを提供します。
- ソフトウェア構造が O/R に基づいている場合 R マッピング フレームワークの要件が特別に設計されているため、Web システムのデータベース アクセス要求が大幅に削減されます。オブジェクト キャッシュは、OLTP (オンライン トランザクション処理) アプリケーション
に適しています。クエリ キャッシュ
は、データベース クエリ キャッシュ -
と同様に、データベース クエリの結果セットをキャッシュします。
は、時間はかかるものの適時性の要件が低い一部のシナリオに適しています。クエリ キャッシュとオブジェクト キャッシュはさまざまなシナリオに適用でき、相互に補完的です クエリ結果セットに含まれるテーブル レコードが変更された場合は、キャッシュのクリアに注意する必要があります 3。
a. 機能
- ページのキャッシュテクノロジーは、データベースサーバーの負荷を軽減するだけでなく、アプリケーションサーバーの負荷も軽減します
- 適切なページキャッシュにより、ページのレンダリング速度が大幅に向上します
- ページ キャッシュの難しさは、期限切れのキャッシュをクリーンアップする方法です
b. 分類
I. 動的ページの静的化
テンプレートテクノロジーを使用して、一度アクセスした動的ページから静的HTMLを生成し、同時にページリンクを変更します
動的ページ静的化テクノロジーは広く普及しています。インターネット CMS/ニュース Web アプリケーションで使用されますが、Discuz など、このテクノロジーを使用する BBS アプリケーションもあります。
権限検証を実行できず、個人情報を表示できません
AJAX リクエストを使用して補うことができます静的動的ページのいくつかの欠点
II、サーブレットキャッシュ
URLアクセスによって返されたページ結果をキャッシュし、ニュースリリースなどの粗粒度のページキャッシュに適しています
権限チェックを実行できます
-
OScache は、シンプルなサーブレット キャッシュを提供します (Web 経由。XML での設定)
サーブレット キャッシュを実装するように自分でプログラムすることもできます
III. ページ内部キャッシュ
動的ページのローカル フラグメント コンテンツをキャッシュします。パーソナライズされているが更新頻度が低い一部のページ (ブログなど)
OSCache は単純なページ キャッシュを提供します
JSP タグを自分で拡張してページの部分キャッシュを実装できます
6. Web サーバー側キャッシュ
プロキシサーバーモードに基づくWebサーバー側のキャッシュ、squid/nginxなど
WebサーバーのキャッシュテクノロジーはCDN(コンテンツ配信ネットワーク)の実装に使用されます
国内の主流で広く採用されていますポータル
プログラミングは必要ありませんが、ニュースのみです Web サイトを公開する場合、ページのリアルタイム要件は高くありません
7. Ajax ベースのブラウザー キャッシュ
AJAX を使用すると、データベースがはブラウザ側にキャッシュされます
現在のページを離れない限り、現在のページを更新する必要はなく、キャッシュされたデータを直接読み取ることができます
AJAXテクノロジーを使用しているページにのみ適用されます
上記は Java キャッシュ技術の紹介です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。