Развертывание веб-приложения
Чтобы развернуть веб-сборку, необходимо настроить сервер и убедиться, что используются правильные заголовки ответов, чтобы браузер получал правильный ответ и правильно его обрабатывал.
В Unity есть две основные настройки, которые влияют на настройку сервера:
- Формат сжатия: Определяет, как Unity сжимает файлы во время сборки.
- Резервная декомпрессия: Определяет, как Unity обработка загруженных файлов при запуске сборки в браузере.
Формат сжатия
Выберите тип сжатия в окне Настройки Веб-плеера (меню: Изменить > Project Настройки > Плеер, затем выберите Веб и разверните раздел Настройки публикации):
| Метод сжатия | Описание |
|---|---|
| gzip-компрессия | Это опция по умолчанию. Gzip файлы больше, чем файлы Brotli, но быстрее для создания, и нативно поддерживается всеми браузерами как HTTP и HTTPS. |
| Бротли | Сжатие Brotli обеспечивает наилучшие коэффициенты сжатия. Сжатые файлы Brotli меньше, чем gzip, но требуют больше времени для сжатия, что увеличивает время итерации на сборках выпуска. Chrome и Firefox только встроенно поддерживают сжатие Brotli над HTTPS. |
| Инвалиды | Отключает сжатие. Выбирайте этот вариант, если хотите реализовать собственное сжатие в скриптах постобработки. Его же стоит выбрать, если вы планируете использовать статическое сжатие на сервере размещения. |
Дополнительные сведения о поддержке выбранных методов сжатия браузерами см. в документации Совместимость веб-браузеров.
Примечание: Настройка Формат сжатия применяется только к сборкам выпуска. Разработанные сборки не сжимаются.
Конфигурация веб-сервера
В частности, могут возникнуть проблемы, если у вас уже есть другая серверная конфигурация для сжатия размещенных файлов, которая может помешать этой конфигурации. Чтобы браузер выполнял декомпрессию в основном режиме во время загрузки приложения, добавьте заголовок Content-Encoding в ответ сервера. Этот заголовок должен соответствовать типу сжатия, используемому Unity во время сборки. Образцы кода см. в Server Configuration Code Examples.
Резервная декомпрессия
Резервная опция декомпрессии позволяет Unity автоматически встраивать декомпрессор JavaScript в вашу сборку. Этот декомпрессор соответствует выбранному вами методу сжатия и декомпрессирует ваше содержимое, если браузер не может сделать это.
Включить резервное декомпрессирование
Включите резервное декомпрессирование из окна Настройки Игрока (меню: Изменить > Project Настройки > Игрок, затем выберите Веб и разверните раздел Параметры публикации).
Когда вы включаете резервное декомпрессирование, Unity добавляет a .unityweb расширение для файлов сборки. Вы должны рассмотреть возможность использования Резервная декомпрессия если у вас меньше опыта работы с конфигурацией сервера или если конфигурация сервера недоступна для вас.
Примечание: Включение резервного декомпрессирования приводит к увеличению размера загрузчика и менее эффективной схеме загрузки файлов сборки.
Отключить резервный вариант декомпрессии
Параметр Decompression Fallback по умолчанию отключен. Поэтому по умолчанию файлы сборки имеют расширение, соответствующее выбранному методу сжатия.
Существуют два метода сжатия: gzip или Brotli. Дополнительную информацию см. в разделе формат сжатия.
Для того, чтобы браузеры могли декомпрессировать файлы сборки Unity во время загрузки, вам нужно настроить веб-сервер на обслуживание сжатых файлов с соответствующими заголовками HTTP. Это называется декомпрессией браузера. Она быстрее, чем резервная декомпрессия JavaScript, что может сократить время запуска приложения.
Процесс настройки для декомпрессии основного браузера зависит от веб-сервера. Образцы кода см. в Server Configuration Code Examples.
Заголовки Content-Encoding
Заголовок Content-Encoding сообщает браузеру, какой тип сжатия Unity использовал для сжатых файлов. Это позволяет браузеру распаковать файлы в нативном режиме.
Установите в заголовке ответа Content-Encoding метод сжатия, выбранный в Настройках проигрывателя.
| Метод сжатия | Расширение файла | Заголовок ответа |
|---|---|---|
| gzip-компрессия | .gz | Content-Encoding: gzip |
| Бротли | .br | Content-Encoding: br |
WebAssembly поток (заголовок высокого уровня)
Стриминг WebAssembly позволяет браузеру компилировать код WebAssembly, пока он все еще загружает код. Это значительно улучшает время загрузки.
Для того, чтобы потоковая компиляция WebAssembly работала, сервер должен возвращать файлы WebAssembly с типом application/wasm MIME. Для использования потоковой компиляции WebAssembly вам нужно предоставить файлы WebAssembly с заголовком ответа Content-Type: application/wasm. Заголовок Content-Type сообщает серверу, какой тип медиа содержится в файле. Это значение должно быть установлено на application/wasm для файлов WebAssembly.
| Расширение файла | Заголовок ответа |
|---|---|
| .wasm, .wasm.gz, .wasm.br | Content-Type: application/wasm |
Примечание: WebAssembly поток не работает вместе с JavaScript декомпрессии, когда опция Decompression Fallback включена. Загруженный WebAssembly файл должен сначала пройти через JavaScript декомпрессора, потому что браузер не может поток его во время загрузки.
Дополнительные заголовки
Если ваш файл содержит JavaScript, вы должны добавить заголовок Content-Type application/javascript. Некоторые серверы могут включать это автоматически, в то время как другие не делают этого.
| Расширение файла | Заголовок ответа |
|---|---|
| .js, .js.gz, js.br | Content-Type: application/javascript |