Version: 2022.1
言語: 日本語
WebGL のメモリ
Interaction with browser scripting

WebGLのキャッシュ動作

In Unity WebGL, the Cache API lets you store the asset data cached in .data files and AssetBundles within the browser cache. Storage limits for the browser cache such as maximum file size, maximum overall cache size, and eviction criteria are dependent on the browser and platform that you’re using. For more information, see Browser storage limits and eviction criteria.

WebGL キャッシュ動作のカスタマイズ

デフォルトでは、WebGL キャッシュはアセットデータファイル .data と AssetBundle ファイル .bundle を保存し、キャッシュからロードする前にそれらを再検証します。この動作は、UnityLoader 設定を変更する新しい WebGL テンプレート を加えることで変更できます。

以下の例では、index.html ファイル内の UnityLoader 設定にカスタムの cacheControl 関数を加える例を示しています。

var config = {
   // ...
# if USE_DATA_CACHING
   cacheControl: function (url) {
     // Caching enabled for .data and .bundle files.
     // Revalidate if file is up to date before loading from cache
     if (url.match(/\\.data/) || url.match(/\\.bundle/)) {
         return "must-revalidate";
     }

     // Caching enabled for .mp4 and .custom files
     // Load file from cache without revalidation.
     if (url.match(/\\.mp4/) || url.match(/\\.custom/)) {
         return "immutable";
     }
 
     // Disable explicit caching for all other files.
     // Note: the default browser cache may cache them anyway.
     return "no-store";
   },
# endif
   // ...
}

cacheControl 関数は、リクエストの url をパラメーターとして受け取り、以下のいずれかを返します。

  • must-revalidate - この関数が must-revalidate を返す場合、キャッシュは有効な状態に戻り、ファイルはキャッシュからロードされる前に再検証されます。

  • immutable - この関数が immutable を返す場合、キャッシュが有効になり、再検証なしでキャッシュからファイルがロードされます。

  • no-store - この関数が no-store を返す場合、キャッシュは無効になります。

ブラウザーは、.html、.js、.css、.json、.jpg、.png などの特定のファイルタイプを自動的に保存 (キャッシュ) します。そのため、WebGL キャッシュに明示的に保存する必要はありません。WebGL キャッシュの典型的な候補は、サイズの大きなファイルやカスタムファイル形式を使用するファイルなどです。

WebGL のメモリ
Interaction with browser scripting