まず、キャッシュは何か
1、キャッシュメモリは、頻繁に使用されるデータは、への迅速なアクセスを容易にするために、コピーした特殊なキャッシュ・メモリ・サブシステムである
、2より大きな2つのハードウェア/ソフトウェア間の速度差のすべてがして、両方の差分データ構造の伝送速度を調整するために、キャッシュと呼ぶことができます
第二に、キャッシュの分類
1は、Webアプリケーションに基づいています
2、システム・アーキテクチャの異なるレベル間で、アクセス速度を高速化するために、キャッシュすることができます
- オペレーティングシステムのディスクキャッシュ - >ディスクの機械的な動作を減らすために
- データベースキャッシュ - > I / Oファイルシステムを縮小
- アプリケーションキャッシュ - >データベースクエリを減らします
- Webサーバーのキャッシュ - >アプリケーションサーバー要求を減らします
- クライアントブラウザのキャッシュ - >ウェブサイトへのアクセスを減らします
第三に、オペレーティングシステムのキャッシュ
1は、ディスクキャッシュファイルシステムが用意されています。オペレーティングシステムは、多くの場合、管理するファイルシステムによって、メモリへのファイルの内容にアクセスする必要があります
2を、ときに、アプリケーションのファイル・システムを介してディスクファイルにアクセスして、オペレーティングディスクキャッシュシステムは、ファイルの内容の中から読み込むファイル読み込み速度が加速
3、ディスクキャッシュは自動的に通常人間の介入なしに、オペレーティングシステムによって管理されますが、オペレーティングシステムとして作用するように多くのメモリを使用できるように、十分な物理メモリを確保すべきですディスクキャッシュは、ファイルの読み取り速度をスピードアップ
4を、ファイルシステムのディスクキャッシュのための特別なアプリケーションは、高い需要があり、ファイルシステムのディスクキャッシュをバイパスし、ディスクパーティションへの直接アクセスは、独自のディスク達成するために
5、キャッシュポリシーを
- OracleのRAWデバイス(rawデバイス) - 直接ファイルシステムを放棄
- MySQLのInnoDBの的:innodb_flush_method = O_DIRECT
第四に、データベースキャッシュ
1、の重要性
- データベースは、通常、エンタープライズアプリケーションの中核部分であります
- データベースに格納されるデータの量は、通常、非常に大きいです
- データベースクエリは、通常、非常に頻繁に、そして時には非常に複雑で
- 理由により上記データベースのクエリは非常に頻繁にディスクを引き起こす可能性がありますI / Oは、CPUを強制的に、読み出し動作待って中断し、データベースのパフォーマンスは極めて低いです
2、キャッシュ戦略
A、クエリキャッシュ
- SQLクエリ結果セットのキャッシングにキー値として、
- テーブルのレコードを含むクエリが変更されると、キャッシュは自動的に削除されます
- 適切なクエリキャッシュが大幅にデータベースのパフォーマンスを向上します設定します
- クエリキャッシュは常に良いとは限りません、大きすぎるQqueryキャッシュメモリが無駄になります。
- MySQLの:query_cache_size = 128M
B、データバッファ
- メモリ内のデータ・バッファコンテナデータベースのデータ
- データバッファヒット率は、直接データベースの性能を決定します
- 優れたデータバッファより大きく、より良く
- MySQLの的InnoDBのバッファ:innodb_buffer_pool_size = 2G
- MySQLは、サーバ60から80パーセントにバッファプールオープン、大きな物理メモリを推奨しました
第五に、アプリケーションキャッシュ
1、オブジェクトキャッシング
- Hibernateは、O / Rマッピングフレームワーク、例えば、によって提供されるアクセス透明、きめ細かいキャッシュされたデータベースクエリの結果は、明示的なプログラミング・サービス・コードなしに、キャッシュポリシーが最も便利です
- 特定の設計ソフトウェア構造は、大幅に必要なデータベース要求O / RマッピングフレームワークとしてシステムにオブジェクトキャッシュWebアクセスの使用を減少させる場合
- オブジェクトキャッシュのうまく設計されたデータベース構造と使用、高性能、OLTP(オンライントランザクション処理)アプリケーションのためのオブジェクト・キャッシュを提供することができます
2、クエリキャッシュ
- データベースクエリの結果セットのキャッシング、同様のクエリキャッシュデータベース
- これは、いくつかの時間がかかるにも適用されますが、適時性要件が比較的低いシナリオです。クエリキャッシュとオブジェクトキャッシング該当シーンは同じではありません、相補的であり、
- 関連するクエリの結果セットのテーブルのレコードが変更されたとき、あなたはキャッシュをクリアするために注意を払う必要があります
3、ページキャッシュの
A、役割
- ページのキャッシング技術について、データベースサーバの圧力を減らすことができるだけでなく、アプリケーションサーバは、圧力を緩和することができます
- グッドページキャッシュは劇的ページのレンダリングの速度を向上させることができます
- ページキャッシュ困難期限切れのキャッシュをクリーンアップする方法です
B、カテゴリー
I、動的な静的なページ
- テンプレートの技術を使用すると、一度、静的なHTMLページを生成し、ページリンク、静的リンクのページへ次の要求の直接アクセスを変更する動的にアクセスされます
- たとえば清華ために、動的なページの静的技術が広くインターネットCMS /ニュースWebアプリケーションで使用されているが、この技術のBBSアプリケーションもあります!
- アクセス権が確認できない、パーソナライズされた情報を表示することができません
- 動的な静的なページを構成するためにAJAX要求を使用していくつかの欠点
II、サーブレットのキャッシュ
- アクセスの結果は、このようなプレスリリースとして、粗粒ページキャッシュに返されたページのキャッシュのURL
- あなたは、権限を確認することができます
- OSCacheのは、(web.xml構成によって)、単純なサーブレットのキャッシュを提供します
- あなたは、プログラミングサーブレットのキャッシュを所有することができます
III、ページ内部キャッシュ
- いくつかのパーソナライズページのコンテンツの部分断片のキャッシュ動的なページのために、しかし、頻繁に更新されない(例えばブログ)
- OSCacheのは、単純なページキャッシュを提供します
- あなたは、ページキャッシュを実現する、独自のJSPタグを拡張することができます
六、Webサーバ側のキャッシュ
- そのようなイカ/ nginxのように、Webサーバ側のキャッシュプロキシモードに基づいて、
- CDN(コンテンツ配信ネットワークコンテンツ配信ネットワーク)を実装するために使用されるWebサーバーのキャッシング技術
- 国内の主流ポータルの広範な使用
- プログラミングを必要としないが、唯一のプレスリリースのウェブサイト、要求の少ないリアルタイムのページされませ
七、Ajaxベースのブラウザのキャッシュ
- AJAX呼び出しを使用したときにブラウザのキャッシュ内のデータベース
- あなたはキャッシュデータを直接読み取ることができ、現在のページを更新せず、現在のページを残していません
- これは、AJAX技術を使用してページにのみ適用されます