2009-03-21 6 views
11

현재 호스팅 가상 서버에 있습니다. Asp.Net 3.5 사이트에 대해 GZip 압축을 사용하려면 어떻게 시작해야합니까?Asp.Net을 사용하여 CSS/JS GZip 압축

'포장 된'JS 파일을 사용해 보았지만 제대로 작동하지 않아 제대로 작동하지 않는다고 가정합니다 ...?

답변

19

GZIP는 IIS에서 처리해야하며 실행중인 IIS 버전은 무엇입니까?

클라이언트는 서버에 GZiped 버전을 요청할 책임이 있습니다. 서버는 두 가지를 찾고 요청은 http 1.1이며 Accept-Encoding : gzip의 헤더입니다. 이 헤더를 찾는 쉬운 방법은 사용하는 것입니다. firebug

IIS6 - GZip은 iis 스냅인을 사용하여 활성화 할 수 있습니다. Microsofts MSDN Topic On Gzip With IIS6

IIS7은 - Gzip으로는 공백을 제거하고 변수 이름을 단축 자바 스크립트의 전체 크기를 감소, 축소에와 자바 스크립트 파일을 포장하여 httpCompression의 XML 태그 Nick Berardi's Getting IIS 7 to Compress JavaScript

를 사용하여 Web.config를 활성화 할 수 있습니다.

+0

IIS6의 뛰어난 워크 플로우 : http://engineering.leads360.com/post/9301650692/http-compression-gzip-on-iis-6 –

1

IIS가 이것을 구성 할 수있는 곳이 두 번째입니다. IIS를 직접 변경할 수없는 경우 Accept-Encoding : gzip 또는 deflate 설정을 확인하는 모든 요청에 ​​처리기를 추가 할 수 있습니다. 그런 다음 SharpZipLib과 같은 것을 사용하여 올바른 압축을 수행합니다. 그러나 이것은 신속하게 kludgey를 가져옵니다.

css 또는 js와 같은 정적 파일을 수동으로 gzipping하는 데 제한된 성공을 찾을 수 있습니다. styles.css.gzscripts.js.gz을 html에 포함시키고 gz 확장자를 gzipped 텍스트의 mimetype에 매핑하면 (예 : application/x-gzip입니까?) 많은 브라우저 (예 : 파이어 폭스, 사파리, 아마도 크롬)가 잘 처리 할 것입니다. 그러나 몇몇 브라우저는 그렇지 않을 것이며, 당신은 그들을 빼내고 있습니다 (링크, 어쩌면 구형 오페라).

7

필자가 선호하는 방법은 YUI Compressor과 같은 압축 도구를 사용하여 빌드 프로세스의 일부로 만드는 것입니다 (압축률을 높이면 압축률이 높지 않을 수도 있고 둘 다 사용할 수도 있습니다. 아래에 제시된 성능 문제를 놓치지 마십시오.)

IIS의 압축과 관련된 주요 문제 중 하나는 모든 JS/CSS 파일을 단일 파일로 압축하지 않는다는 것입니다. 따라서 사이트에 7 개의 JS 파일과 20 개의 CSS가있는 경우 (놀라 울 정도로 이것은 매우 일반적입니다) 데이터를 얻으려면 27 번의 HTTP 왕복이 필요합니다. 이를 위해 HTTP 처리기를 작성하는 것은 공유 호스팅을 사용하는 사람들에게 좋은 생각입니다.

간단한 빌드 너 한테 릴리스 모드에서는 페이지 마스터는 site.js

편집를 참조해야

If(build.config == release) { 
Add your js file in order to the make files. 
    e.g. jQuery.js jQuery.form.js jQuery.container.js custom.js 
Split and pass it as params to YUI 
Compress 
O/P to site.js 
Delete all the above files. 
} 

은 JS/CSS 루트 디렉토리에 파일을 가지고하는 것입니다 : YUI와 nant를 통합하는 방법은 link입니다.
: Justin Etheredge는 SquishIt이라는 CSS/js 파일을 결합하고 압축하는 멋진 도구를 출시했습니다.

1

코드를 사용하여 스크립트를 GZip으로 처리 할 수도 있습니다.작동 방식은 ASP.NET 페이지를 사용하여 올바른 헤더 (압축 된 스트림이 브라우저에 있음을 알리는)와 함께 압축 된 파일을 전달하는 것입니다. GZip 압축을 사용하는 방법 (YUI 사용) 및 스크립트 번들 (서버 왕복 횟수 감소)과 관련하여 문서를 작성했습니다. http://www.codeproject.com/KB/custom-controls/smartinclude.aspx

1

StyleManager라는 CSS 축소를위한 서버 컨트롤. YUI Compressor under-the-hood를 사용합니다.

YUI C를 수동으로 추가하는 것보다 사이트에 더 쉽게 추가 할 수 있으며 그 사용법은 asp.net의 ScriptManager와 매우 유사하므로 익숙해집니다.

가장 중요한 것은 - CSS 파일도 결합한 것입니다. 그래서 그 대신 10 개 CSS 파일처럼 필요없이 그냥도 등 압축됩니다 1, 수 있습니다 다운로드

은 체크 아웃 - gStyleManager.com

1
내가이 같은은 "폐의"사용을 고려할 것

Gzip보다 더 효율적입니다. 나는 둘 다에 대한 코드를 추가했습니다.

사이트에 추가하려면 텍스트 파일을 만들고 해당 코드에 복사하여 붙여 넣은 다음 Global.asax로 저장하십시오. 이제이 파일을 사이트의 루트에 추가하십시오.

<%@ Application Language="C#" %> 
<%@ Import Namespace="System.IO" %> 
<%@ Import Namespace="System.IO.Compression" %> 
<script runat="server"> 
void Application_PreRequestHandlerExecute(object sender, EventArgs e) 
    { 
     HttpApplication app = sender as HttpApplication; 
     string acceptEncoding = app.Request.Headers["Accept-Encoding"]; 
     Stream prevUncompressedStream = app.Response.Filter; 

     if (!(app.Context.CurrentHandler is Page || 
      app.Context.CurrentHandler.GetType().Name == "SyncSessionlessHandler") || 
      app.Request["HTTP_X_MICROSOFTAJAX"] != null) 
      return; 

     if (acceptEncoding == null || acceptEncoding.Length == 0) 
      return; 

     acceptEncoding = acceptEncoding.ToLower(); 

    if (acceptEncoding.Contains("deflate") || acceptEncoding == "*") 
     { 
     // defalte 
      app.Response.Filter = new DeflateStream(prevUncompressedStream, 
       CompressionMode.Compress); 
      app.Response.AppendHeader("Content-Encoding", "deflate"); 
     } 
     else if (acceptEncoding.Contains("gzip")) 
     { 
      // gzip 
      app.Response.Filter = new GZipStream(prevUncompressedStream, 
       CompressionMode.Compress); 
      app.Response.AppendHeader("Content-Encoding", "gzip"); 
     } 
    } 
</script> 
0

이전 게시물은 aspx 페이지에는 적합하지만 CSS 및 js 파일에는 적합하지 않습니다. 압축은이다에 트릭은 cssjs 파일을 포함하려면 다음 .css.aspx.js.aspx 파일 .css.aspx.js.aspx

  • 삽입 <%@ Page ContentType="text/css" %><%@ Page ContentType="text/javascript" %>.css.js 파일의 파일 확장명이

    1. 변화
    2. 페이지에 .css.js 파일 대신 .css.aspx.js.aspx 개의 파일을 포함하십시오.