Unity 6.3
0 онлайн 20 гостей 3 в системе
Вход

Поведение кэша в Интернете

В веб-платформе Unity функция Cache API позволяет хранить данные ассетов, кэшированные в файлах .data и AssetBundles, в кэше браузера. Ограничения на хранение для кэша браузера, такие как максимальный размер файла, максимальный общий размер кэша и критерии удаления, зависят от используемого браузера и платформы. Дополнительные сведения см. в разделе Ограничения на хранение в браузере и критерии удаления.

Кэширование данных

Чтобы получить доступ к Кэшированию данных, откройте Настройки публикации для Web из Файл > Профиль сборки > Настройки проигрывателя. Это позволит браузеру кэшировать основные файлы данных в базу данных IndexedDB.

Использование кэш-памяти браузера по умолчанию HTTP не гарантирует, что браузер будет кэшировать определенный ответ. Это происходит потому, что кэш-память браузера HTTP имеет ограниченное пространство, и браузер может не быть в состоянии кэшировать файлы, которые слишком большие.

Чтобы повысить скорость загрузки, IndexedDB позволяет кэшировать файлы сверх предела браузера. Когда вы кэшируете больше файлов, вы увеличиваете вероятность того, что загруженный контент будет доступен на компьютере пользователя во время следующего запуска сборки.

Чтобы разрешить браузеру кэшировать основные файлы данных (.data) в IndexedDB кэш, включить Кэширование данных в Игрок настройки (меню: Изменить > Project Настройки > Игрок). По умолчанию стандартная конфигурация веб-загрузчика также кэширует AssetBundles и заново их проверяет. Переопределять поведение кэша нужно только тогда, когда вы хотите изменить это поведение по умолчанию — например, отключить кэширование бандлов или кэшировать файлы других типов.

Если вы хотите настроить управление кэшем непосредственно через экземпляр, убедитесь, что Module.cacheControl(url) возвращений must-revalidate для запрашиваемого URL AssetBundle, чтобы кэширование оставалось включённым. Например, вы можете переопределить unityInstance.Module.cacheControl() функции в выполнении callback Обещания, что createUnityInstance() возвращается.

Дополнительную информацию о createUnityInstance()см. в Сжатые сборки и конфигурация сервера.

Настройка поведения веб-кэша

По умолчанию конфигурация кэша хранит файл данных ассета .data и AssetBundle файлы .bundle, и повторно проверяет их перед загрузкой из кэша. Чтобы изменить это поведение, добавьте новый Шаблон веб-сайта что изменяет UnityLoader конфигурации.

В следующем примере показано, как добавить пользовательскую функцию cacheControl в конфигурацию UnityLoader в файле index.html.

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 — Если функция возвращает неизменный, кэш включается, и файл загружается из кэша без повторной проверки.

  • no-store — Если функция возвращает no-store, кэш отключен.

Браузер автоматически сохраняет (кэширует) определенные типы файлов, такие как .html, .js, .css, .json, .jpg, .png, так что они не должны быть явно сохранены в Web Cache. Типичные кандидаты для Web Cache включают большие файлы и файлы, которые используют пользовательский формат файла.