WebGL 프로젝트 빌드 및 실행(Building and running a WebGL project)
WebGL 빌드 디버깅 및 문제 해결(Debugging and trouble shooting WebGL builds)

WebGL: Deploying compressed builds(WebGL: 압축된 빌드 배포)

릴리스 모드에서 WebGL 프로젝트를 빌드하는 경우(빌드 퍼블리시 참조) Unity 에디터는 빌드 결과 파일을 압축하여 빌드의 다운로드 크기를 줄입니다. 사용되는 압축 포맷은 퍼블리싱 설정(메뉴: Edit > Project Settings > Player > Publishing Settings)의 압축 포맷 옵션에서 선택할 수 있습니다.

  • gzip: 기본 옵션입니다. gzip 파일은 Brotli 파일보다 크지만, 빌드 속도가 더 빠르고 모든 브라우저에서 http 와 https 를 통해 모두 기본적으로 지원됩니다.

  • Brotli: Brotli 압축은 압축 비율이 가장 높습니다. Brotli 압축 파일은 gzip 보다 훨씬 더 작지만 압축하는 데 시간이 오래 걸려 빌드 릴리스 반복 시간이 늘어납니다. Brotli 압축은 Chrome 과 Firefox 에서 https 를 통해 기본적으로 지원됩니다. 자세한 내용은 WebGL 브라우저 호환성을 참조하십시오.

  • Disabled: 압축이 비활성화됩니다. 포스트프로세싱 스크립트에서 원하는 압축을 직접 구현하려는 경우에 사용합니다.

압축하여 빌드한 Unity 빌드는 아무 브라우저에서나 작동합니다. Unity 에는 JavaScript 로 작성된 압축 풀기 소프트웨어가 들어 있습니다. 이 소프트웨어는 서버에서 http 전송 레벨의 압축이 활성화되지 않은 경우에 사용됩니다.

고급: 기본 브라우저 압축 해제

브라우저는 기본적으로 빌드 데이터를 다운로드하는 동안 Unity 빌드의 압축을 풀 수 있습니다. 이는 JavaScript 에서 파일의 압축을 푸는 데 발생하는 추가 지연을 방지하여 시작 시간을 단축하는 장점이 있습니다. 브라우저가 기본적으로 압축 풀기를 처리할 수 있게 하려면 적절한 http 헤더를 사용하여 압축 파일을 처리하도록 웹 서버를 설정해야 합니다. 이렇게 하면 브라우저는 데이터가 gzip 또는 Brotli 형식으로 압축되어 있음을 알고 데이터 전송 중에 압축을 풉니다. Brotli 압축은 Firefox 와 Chrome 에서 https 에서만 지원되고 gzip 압축은 모든 브라우저에서 지원됩니다. 자세한 내용은 WebGL 브라우저 호환성을 참조하십시오.

웹 서버 설정

기본 브라우저 압축 풀기를 설정하는 프로젝트는 웹 서버에 따라 다릅니다. 이 페이지에 수록된 지침은 가장 일반적인 두 가지 웹 서버인 ApacheIIS 에 해당됩니다. 이 두 웹 서버는 기본 설정에서 작동하도록 고안되었지만, 특정 설정과 일치하도록 조정해야 할 수 있습니다. 특히 서버 측에 다른 호스트 파일 압축 설정이 있는 경우 이 설정과 간섭이 발생하여 문제가 생길 수 있습니다. 기본 개념은 빌드 시간에 사용된 압축 타입에 해당하는 콘텐츠 인코딩 헤더를 서버 응답에 추가하는 것입니다. 이를 통해 브라우저는 다운로드 중에 압축 풀기를 기본적으로, 그리고 비동기식으로 수행할 수 있습니다.

Apache

Apache 서버는 보이지 않는 .htaccess 파일을 서버 설정에 사용합니다. 아래 코드는 기본 브라우저 압축 풀기를 적용하는 데 사용할 수 있는 .htaccess 파일의 예제입니다. Apache 서버 구성 설정은 선택 사항입니다.

gzip 압축 빌드의 경우 다음 .htaccess 파일을 Build 하위 폴더에 저장합니다.

<IfModule mod_mime.c>
  AddEncoding gzip .unityweb
</IfModule>

brotli 압축 빌드의 경우 다음 .htaccess 파일을 Build 하위 폴더에 저장합니다.

<IfModule mod_mime.c>
  AddEncoding br .unityweb
</IfModule>

IIS

필수 IIS 서버 설정 단계:

기본적으로 IIS 서버는 알 수 없는 MIME 타입의 정적 콘텐츠를 제공하지 않습니다. Unity 빌드가 IIS 에서 작동하도록 하기 위해서는 먼저 .unityweb 확장자를 application/octet-stream 콘텐츠 타입과 연결해야 합니다. 다음 두 가지 방법으로 이렇게 할 수 있습니다.

IIS Manager 인터페이스 사용: IIS Manager 패널에서 웹사이트를 선택하고 MIME Types 기능을 열고 Add… 액션을 선택합니다. .unityweb을 파일 이름 확장자로 설정하고 application/octet-stream을 MIME 타입으로 설정한 후 OK를 클릭합니다.

서버 설정 파일 사용: IIS 는 web.config 파일을 서버 설정에 사용합니다. 이 설정 파일은 IIS Manager 에서 특정 폴더에 적용된 모든 변경 사항을 나타냅니다. application/octet-stream MIME 타입을 .unityweb 확장자와 연결하려면 다음 web.config 파일을 사용합니다.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
            <staticContent>
            <remove fileExtension=".unityweb" />
<mimeMap fileExtension=".unityweb" mimeType="application/octet-stream" />
            </staticContent>
    </system.webServer>
</configuration>

설정 파일은 모든 서버 하위 폴더에 영향을 미치므로 .unityweb 확장자의 MIME 타입을 서버 루트 폴더에서 한 번만 설정하면 됩니다.

선택적인 IIS 서버 설정 단계:

빌드 시작 시간을 단축하기 위해, 원한다면 다음 설정 파일을 사용할 수 있습니다. 이 설정을 사용하기 위해서는 Microsoft 의 IIS URL Rewrite IIS 모듈을 설치해야 합니다. 그렇지 않으면 브라우저에서 500 내부 서버 오류가 발생합니다.

gzip 압축 빌드의 경우 다음 web.config 파일을 Build 하위 폴더에 저장합니다.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
            <staticContent>
                    <remove fileExtension=".unityweb" />
                    <mimeMap fileExtension=".unityweb" mimeType="application/octet-stream" />
            </staticContent>
            <rewrite>
                    <outboundRules>
                        <rule name="Append gzip Content-Encoding header">
                            <match serverVariable="RESPONSE_Content-Encoding" pattern=".*" />
                            <conditions>
                                    <add input="{REQUEST_FILENAME}" pattern="\\.unityweb$" />
                            </conditions>
                            <action type="Rewrite" value="gzip" />
                        </rule>
                    </outboundRules>
            </rewrite>
    </system.webServer>
</configuration>

brotli 압축 빌드의 경우 다음 web.config 파일을 Build 하위 폴더에 저장합니다.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
            <staticContent>
                    <remove fileExtension=".unityweb" />
                    <mimeMap fileExtension=".unityweb" mimeType="application/octet-stream" />
            </staticContent>
            <rewrite>
                    <outboundRules>
                        <rule name="Append br Content-Encoding header">
                            <match serverVariable="RESPONSE_Content-Encoding" pattern=".*" />
                            <conditions>
                                    <add input="{REQUEST_FILENAME}" pattern="\\.unityweb$" />
                            </conditions>
                            <action type="Rewrite" value="br" />
                        </rule>
                    </outboundRules>
            </rewrite>
    </system.webServer>
</configuration>

<remove fileExtension=".unityweb" /> 행은 콘텐츠 타입이 서버 디렉토리 계층 구조의 더 높은 수준에서 이미 오버라이드된 상황을 처리하는 데 필요합니다. 이 행이 없으면 서버 예외가 발생하는 원인이 될 수 있습니다.


  • 2017–05–24 편집 리뷰 없이 페이지 수정됨

  • Unity 5.6 에서 업데이트됨

WebGL 프로젝트 빌드 및 실행(Building and running a WebGL project)
WebGL 빌드 디버깅 및 문제 해결(Debugging and trouble shooting WebGL builds)