# 웹 애플리케이션 배포

> Deploy a Web build.

웹 빌드를 배포하려면 브라우저가 올바른 리스폰스를 수신하고 이를 올바르게 처리할 수 있도록 서버를 설정하고 올바른 리스폰스 헤더를 사용하고 있는지 확인해야 합니다.

Unity에는 서버 설정 방식에 영향을 미치는 다음의 두 가지 주요 설정이 있습니다.

* **Compression Format**: Unity가 빌드 단계에서 파일을 압축하는 방식을 결정합니다.
* **Decompression Fallback**: 브라우저에서 빌드가 실행될 때 Unity가 다운로드된 파일을 처리하는 방식을 결정합니다.

## Compression Format##compression-format

웹 플레이어 설정 창(메뉴: **Edit** > **Project Settings** > **Player**를 선택한 후 **웹**을 선택하고 **Publishing Settings** 섹션 확장)에서 압축 유형을 선택합니다.


**웹 퍼블리싱 창 이미지:**
![](/api/media?file=/engine/6000.0/media/images/WebGLPublishingWindow.png)

| 압축 방식    | 설명                                                                                                                                                |
| -------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| gzip     | 기본 옵션입니다. Gzip 파일은 Brotli 파일보다 크지만, 빌드 속도가 더 빠르고 모든 브라우저에서 HTTP와 HTTPS를 통해 모두 기본적으로 지원됩니다.                                                        |
| Brotli   | Brotli 압축은 최상의 압축비를 제공합니다. Brotli 압축 파일은 gzip보다 작지만 압축하는 데 시간이 더 오래 걸리므로 릴리스 빌드의 반복 시간이 늘어납니다. Chrome과 Firefox는 기본적으로 HTTPS를 통한 Brotli 압축만 지원합니다. |
| Disabled | 압축을 비활성화합니다. 포스트프로세싱 스크립트에서 원하는 압축을 직접 구현하려는 경우에 사용합니다. 호스팅 서버에서 정적 압축을 사용하려는 경우에도 이를 사용해야 합니다.                                                   |

선택한 압축 방식의 브라우저 지원에 대한 자세한 내용은 [웹 브라우저 호환성](/engine/6000.0/manual/platform-specific/webgl/intro/browsercompatibility.md)에 대한 기술 자료를 참조하십시오.

**참고**: **Compression Format** 설정은 릴리스 빌드에만 적용됩니다. 개발 빌드는 압축되지 않습니다.

## 웹 서버 설정##web-server-configuration

특정 빌드 설정과 일치하도록 서버 설정을 조정해야 할 수 있습니다. 특히 호스팅된 파일을 압축하기 위한 다른 서버 측 설정이 이미 있는 경우 이 설정에 방해가 될 수 있습니다. 애플리케이션을 다운로드하는 동안 브라우저가 기본적으로 압축 풀기를 수행하도록 하려면 서버 응답에 [콘텐츠 인코딩 헤더](#content_encoding_header)를 추가하십시오. 이 헤더는 Unity가 빌드 시점에 사용하는 압축 유형에 해당해야 합니다. 코드 샘플은 [서버 설정 코드 샘플](/engine/6000.0/manual/platform-specific/webgl/building-distribution/server-configuration-code-samples.md)을 참조하십시오.

## Decompression fallback##decompression-fallback

Decompression Fallback 옵션을 사용하면 Unity가 JavaScript 압축 풀기를 빌드에 자동으로 내장할 수 있습니다. 이 압축 해제기는 선택한 압축 방식에 해당하며 브라우저에서 압축 해제하지 못하면 콘텐츠가 압축 해제됩니다.

### Decompression fallback 활성화##enable-decompression-fallback

**플레이어 설정** 창(메뉴: **Edit** > **Project Settings** > **Player**를 선택한 후 **웹**을 선택하고 **Publishing Settings** 섹션 확장)에서 Decompression Fallback을 활성화합니다.

Decompression Fallback을 활성화하면 Unity가 빌드 파일에 `.unityweb` 확장자를 추가합니다. 서버 설정에 대한 경험이 별로 없거나 서버 설정을 사용할 수 없는 경우 **Decompression Fallback**을 사용하는 것이 좋습니다.

**참고**: Decompression Fallback을 활성화하면 로더 크기가 커지고 빌드 파일 로드 체계의 효율성이 떨어집니다.

### Decompression Fallback 비활성화##disable-decompression-fallback

**Decompression Fallback** 옵션은 기본적으로 비활성화되어 있습니다. 따라서 기본적으로 빌드 파일에는 선택한 압축 방식에 해당하는 확장자가 포함되어 있습니다.

선택할 수 있는 압축 방식은 gzip 또는 Brotli입니다. 자세한 내용은 [압축 포맷](#compression_format) 섹션을 참조하십시오.

브라우저가 다운로드하는 동안 Unity 빌드 파일의 압축을 기본적으로 풀 수 있도록 하려면 적절한 HTTP 헤더로 압축된 파일을 제공하도록 웹 서버를 설정해야 합니다. 이를 네이티브 브라우저 압축 해제라고 합니다. JavaScript decompression fallback보다 빠르므로 애플리케이션 시작 시간을 단축할 수 있습니다.

네이티브 브라우저 압축 해제를 위한 설정 프로세스는 웹 서버에 따라 다릅니다. 코드 샘플은 [서버 설정 코드 샘플](/engine/6000.0/manual/platform-specific/webgl/building-distribution/server-configuration-code-samples.md)을 참조하십시오.

## Content-Encoding 헤더##content-encoding-headers

Content-Encoding 헤더는 Unity가 압축 파일에 사용한 압축 유형을 브라우저에 알립니다. 이렇게 하면 브라우저가 기본적으로 파일의 압축을 풀 수 있습니다.

Content-Encoding 리스폰스 헤더를 플레이어 설정에서 선택한 압축 방식으로 설정하십시오.

| 압축 방식  | 파일 확장자 | 리스폰스 헤더                  |
| ------ | ------ | ------------------------ |
| gzip   | .gz    | `Content-Encoding: gzip` |
| Brotli | .br    | `Content-Encoding: br`   |

## WebAssembly 스트리밍(높은 레벨의 헤더)##webassembly-streaming-(higher-level-header)

WebAssembly 스트리밍을 사용하면 브라우저가 코드를 다운로드하는 동안 WebAssembly 코드를 컴파일할 수 있습니다. 이렇게 하면 로딩 시간이 크게 개선됩니다.

WebAssembly 스트리밍 컴파일이 작동하려면 서버가 `application/wasm` MIME 유형의 WebAssembly 파일을 반환해야 합니다. WebAssembly 스트리밍을 사용하려면 `Content-Type: application/wasm` 리스폰스 헤더를 사용하여 WebAssembly 파일을 제공해야 합니다. Content-Type 헤더는 콘텐츠의 미디어 유형을 서버에 알립니다. WebAssembly 파일의 경우 이 값을 `application/wasm`으로 설정해야 합니다.

| 파일 확장자                    | 리스폰스 헤더                          |
| ------------------------- | -------------------------------- |
| .wasm, .wasm.gz, .wasm.br | `Content-Type: application/wasm` |

**참고**: WebAssembly 스트리밍은 Decompression Fallback 옵션이 활성화된 경우 JavaScript 압축 풀기와 함께 작동하지 않습니다. 다운로드한 WebAssembly 파일은 브라우저가 다운로드하는 동안 스트리밍할 수 없으므로 먼저 JavaScript 압축 해제기를 통과해야 합니다.

## 추가 헤더##additional-headers

파일에 JavaScript가 포함되어 있으면 `application/javascript` Content-Type 헤더를 추가해야 합니다. 일부 서버는 이를 자동으로 포함하고, 다른 서버는 포함하지 않습니다.

| 파일 확장자             | 리스폰스 헤더                                |
| ------------------ | -------------------------------------- |
| .js, .js.gz, js.br | `Content-Type: application/javascript` |

***

*
* 2019-09-04
