見出し画像

ゲームで目にする「キャッシュ」って一体何なの?様々な「キャッシュ」を整理してみました

こんにちは。
コ〇ンの犯人が最後の最後まで分からない
エンジニアのふるやです🙃

今回は様々なゲームで目にすることが多い「キャッシュ」について、
綴らせていただきます。

◆「キャッシュ」とは?

CPUバスネットワークなど様々な情報伝達経路において、ある領域から他の領域へ情報を転送する際、その転送遅延を極力隠蔽し転送効率を向上するために考案された記憶階層の実現手段である

引用元:『キャッシュ (コンピュータシステム)』 - Wikipedia

・・・分かりにくいので、以下にメリット・デメリットを整理します😅

◆「キャッシュ」があるとどうなるのか

◇メリット

  • ゲーム、サーバー等、元のサーバーの読み込み速度が高速になる🔥

  • 同、元のサーバーの負荷が軽減する😆

    • 「キャッシュするサーバー等の負荷が上がるのでは?」

      • キャッシュする側はキャッシュ機能専用に最適化されているので、問題ない(という認識です)

◇デメリット

  • キャッシュを参照するため、該当の最新データを参照できない😢

キャッシュを削除すると・・・
→ 最新のデータを取得する
 (サーバーとの通信が発生する為、読み込み速度が低速になる)
→ 取得したデータのキャッシュが生成される
→ 次回の読み込み速度が高速になる

はい。「キャッシュ」がゲシュタルト崩壊してきそうですね🙃笑

それでは、これより様々な「キャッシュ」について
整理していきます!

◆ブラウザのキャッシュ

GoogleChrome、Safari等のブラウザを介してWebページへアクセスした際、端末に保持されるファイル群(主に画像JavaScriptCSS)のこと。

◇キャッシュ削除方法

●Android・PC(Chrome)

●iOS(Safari)

●その他(PCでの別の方法 ※以下)

Windowsの場合: [F12] キーを押下する
 Macの場合:[option] キー + [command] キー + [I](アイ) キー を押下する
ウィンドウの更新ボタンを長押下する
「キャッシュの消去とハード再読み込み」を押下する
  ※注意※ 使用中のブラウザ上にある全てのキャッシュが削除されます

◇キャッシュ削除前後でページ読み込み速度はどう変わったか

●削除前
 Size に memory cache と表示され、 Time が 0ms となっており、
 
キャッシュを利用していることが分かります。

●削除後
 Size に memory cache が表示されず、 Time に値が入っており、
 サーバーからデータを取得していることが分かります。

◇更新されたリソースについて

サーバーから最新のものを取得する(キャッシュを読まないような)
設計にしています。

・ブラウザ:リソースのURLのクエリパラメータへ
      リソースの更新日時を付加する
・アプリ:更新したアセットをダウンロードさせる

◆アプリのキャッシュ

Android、iOS等の端末上にキャッシュされるデータのこと。
ゲーム内で使用するリソースのキャッシュに利用されることが多い。

◇キャッシュ削除方法

●端末 > 設定 の 各アプリ から削除する

●ゲーム内から削除する

弊社オリジナルタイトル『ヒーロー’sパーク』ゲーム画面

◆APCuキャッシュ(えーぴーしーゆー)

PHPのモジュール「APCu」を使用し、データベースから取得したデータ
をWebサーバー上にキャッシュしたもの。各Webサーバーで整合性を保つため、主にマスターデータをキャッシュする際に利用しやすい。

◇キャッシュ削除方法

以下、コマンド(例)を実行し、httpdを再読み込みする

systemctl reload httpd

◆memcache(めむきゃっしゅ)

データベースから取得したデータをWebサーバー上にキャッシュしたもの。APCuが各Webサーバーにマスターデータをキャッシュする方針に対して、memcacheは単一のサーバーのものとして設計するため、ユーザーデータをキャッシュする際に利用しやすい。

◇キャッシュ削除方法

以下、コマンド(例)を実行し、memcachedを再読み込みする

systemctl restart memcached

*memcacheの自動復旧について

◆プラットフォーム上のキャッシュ

ブラウザ向けゲームを提供しているプラットフォーム側でキャッシュしているもの。キャッシュ内容は、gadget.xml、リソース(画像、JavaScript、CSS)等、プラットフォームによって異なる。

◇キャッシュ削除方法

プラットフォームによって異なるため、
各プラットフォームが公開している公式ドキュメントをご参照ください。

◆CDN(Contents Delivery Network)のキャッシュ

サーバーからリソースを取得した際、オリジンサーバー(リソースが設置されているサーバー)の負荷を軽減するために、一度取得したファイルをCloudFlareやAWSのCloudFront等、にキャッシュされるもの。

◇キャッシュ削除方法

●AWS CloudFront の場合、主に以下の2パターンがあります
 ※リンク先はAWS公式ドキュメントとしています


ここまで、様々な「キャッシュ」について整理してきました。

こうして並べると、
改めてキャッシュの種類って多いなと感じるとともに、
キャッシュにお世話になっているとも感じました😌

以上、エンジニアふるや(@h_furuya_)が綴らせていただきました。