HTTPキャッシュと出力キャッシュ

Webシステムの高性能化とキャッシュ   Webシステムの高性能化では、スケールアウト可能な設計を行い利用可能なキャッシュをできる限り活用することが重要です。Webシステム構築で意識しながら利用しなければならないキャッシュは表1の通りです。

大垣 靖男

2005年5月9日 20:00

Webシステムの高性能化とキャッシュ

   Webシステムの高性能化では、スケールアウト可能な設計を行い利用可能なキャッシュをできる限り活用することが重要です。Webシステム構築で意識しながら利用しなければならないキャッシュは表1の通りです。

HTTPキャッシュHTTP 1.1ではキャッシュ機能が強化され、より細かいキャッシュコントロールが可能
出力キャッシュ動的に生成したページをディスクなどに保存し、DBクエリ、ページ生成負荷を軽減
クエリキャッシュDBサーバーへのクエリ結果をキャッシュし、クエリ数を削減
表1:キャッシュの種類


   一般に、HTTPキャッシュ、出力キャッシュ、クエリキャッシュの順番で効果が期待できます。キャッシュが活用可能な場合、スケールアウトによりさらに効率の良い高性能化を期待できます。

HTTPキャッシュ

   スケールアウトを行う際、リバースプロキシが効果的に導入可能な場合は、Webサーバーを増やすより、リバースプロキシを導入した方が高い効果を得られます(図19)。

リバースプロキシを利用したスケールアウト
図19:リバースプロキシを利用したスケールアウト

   リバースプロキシを導入する場合は、キャッシュコントロールを考慮することが必須です。リバースプロキシ構成は小規模なWebシステムで、プロキシサーバーとWebサーバーが同一のコンピュータで動作していても十分効果を期待できます。

   環境によって設定ファイルを変更する必要がありますが筆者のテスト環境で動作するsquid.confは、リスト5、リスト6のとおりです。


リスト5:squid.confの設定例−SquidサーバーとWebサーバーが別のホストの場合

http_port 80
cache_dir diskd /var/cache/squid 100 16 256
cache_effective_user squid
visible_hostname test.example.jp
httpd_accel_host 192.168.100.2………キャッシュするWebサーバー
httpd_accel_port 80………Webサーバーのポート
httpd_accel_single_host on
httpd_accel_with_proxy on
httpd_accel_uses_host_header off

acl all src 0.0.0.0/0.0.0.0
http_access allow all

coredump_dir /var/cache/squid
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log

リスト6:squid.confの設定例−SquidサーバーとWebサーバーが同じホストの場合

http_port 80
cache_dir diskd /var/cache/squid 100 16 256
cache_effective_user squid
visible_hostname test.example.jp
httpd_accel_host localhost………同じホストなのでlocalhost
httpd_accel_port 81………Webサーバーのポート
httpd_accel_single_host on
httpd_accel_with_proxy on
httpd_accel_uses_host_header off

acl all src 0.0.0.0/0.0.0.0
http_access allow all

coredump_dir /var/cache/squid
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log

キャッシュとログ

   HTTPレベルでキャッシュさせてしまうと、ログが取れないので困るのではないか?と思われる方 がいるかもしれません。実際には、通常のWebアプリケーションでは、ページをキャッシュしたせいでログが取れなくて困ることはほとんどありません。アク セスログ収集用にキャッシュ不可に設定した、小さなイメージファイルをページに埋め込み、そのイメージの読み込みログを解析することにより、ほとんどのア クセスログを収集できるからです。収集できないログは、テキストブラウザなどを利用しているユーザーのログです。しかしイメージファイルを読み込まないブ ラウザを利用しているユーザーは、ごく少数であると考えられます。アクセスログは、個別のユーザーのアクセスを把握する目的ではなく、統計情報として利用 されるため、このようなことで困ることはほとんどないでしょう(商用のアクセス解析サービスでも、そのページにイメージファイル、JavaScript、 Javaアプレットを埋め込むことによって、アクセスログを収集し解析しています)。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30