20
10

More than 1 year has passed since last update.

キャッシュです

システムが遅いときの対策としてキャッシュが利用されます。
キャッシュの概念を覚えておくときっと役に立つ時が来ます。
(役に立たないのはお前のレベルが低くて気づけていないと言っても過言ではない←反感食らうやつ)

今回はWebシステムを例にとります

キャッシュはシステム内のほとんどの段階で使用することができます。
例えば…Webシステムの抽象的なアクセスルートと各段階でのキャッシュの適用を考えてみます。

  1. ブラウザ
    1. ブラウザで1度表示したコンテンツ(静的なHTMLとかjsとか画像とか動画とか)を保持しておきます。
  2. Proxyサーバ
    1. 企業内では使われることがあります。
      ブラウザキャッシュと同じように、一度表示したコンテンツをProxyサーバにためておき、外部ネットワークに出る前の段階でキャッシュを返します。
  3. CDN
    1. エッジと呼ばれるWeb閲覧をしているところから近いWebネットワーク上にコンテンツをキャッシュしておくサーバを置き、リクエストが来たらOriginと呼ばれる本体のシステムまでいかずにキャッシュを返します。
  4. Webサーバ
    1. http304等のステータスを返すことで、変更のないファイルはローカル端末上のファイルを使用し、コンテンツ本体は送信しないようにできます。
  5. Application
    1. プログラム内では様々なやりかたがあります。一例としてファイル読み込みを毎回するのではなく、メモリ上にキャッシュしておくなどの方法が取られます。また、動的コンテンツでも変更頻度の少ないものに関してはN分間キャッシュしておくなどして、処理速度を速めることができます。
  6. Database
    1. プログラムと同じように動的な検索結果をメモリ上にキャッシュしておき、ファイルリードの時間を短縮することができます。

ということで、システムの各ポイントでキャッシュを適用することができます。
負荷の高い部分についてはその前段にキャッシュを設けることによってレスポンスの高速化が可能です。
また、Webサーバ以降は処理を前段に寄せることによってスケールイン/ダウンなどの対応ができるため、クラウド費用等が下げられるかもしれません。

その他の例

キャッシュの考え方は様々な応用が利きます。

  • 未適用
    • リクエスト→→→→→→→→→→→→→→→→→→→→→→→→→→→データのオリジン
  • 適用
    • リクエスト→→→→→→→→キャッシュ!→→→→→→→→データのオリジン

スーパーマーケット

農家→→→→農協→→→→卸市場→→→→スーパー→→→→消費者
消費者が毎回農家や牧場やらに買い物に行くのはばかばかしいので様々な段階でキャッシュをします。

ITシステムの問い合わせ

ユーザー→→→→問い合わせ窓口→→→→開発者

リクエスト発生拠点により近い場所で処理をしていくことで、レスポンスの向上とオリジンの負荷低減ができます。

それではよいキャッシュ生活を!

20
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
10