2012-11-26 2 views
1

microhosting.in으로 공유 호스팅을 구입했습니다. 내 신생 기업을위한 사이트를 구축 한 후 자연스럽게 다음 단계로 나아갔습니다. 그래서 성능을 확인했습니다. Pagespeed 테스트는 캐싱 및 압축되지 않은 http를 문제로 지적했습니다. 이제 Plesk를 통해 호스팅되는 Windows는 Web.config를 사용하지 않는 한 명시 적으로 호스팅 공급자를 설득해야하는 IIS 기능 요구 사항을 의미합니다. 기술 팀은 http://blog.fi.net.au/?p=372 같은 것을 시도하기에 약합니다. 프록시 캐싱은 메타 태그 콘텐츠 스니핑을 삼가는 것이 바람직하기 때문에 http를 사용하여 공개 캐쉬를 사용합니다. .htaccess를 사용하여 솔루션을 찾은 모든 곳에서 Web.config와 결합 할 수있는 사용자 지정 구현이 있습니까?방법 Web.config를 사용하여 HTTP 압축 및 캐싱 방법?

답변

0

선택적 콘텐츠를 별도의 폴더에 압축 된 상태로 유지하고 콘텐츠 인코딩 관련 속성을 헤더에 강제로 추가하는 자체 web.config를 사용합니다. 강제적 인 내용을 위해 파일 이름을 asp.net 런타임을 사용하도록 변경하고 ContentType을 의도 된 MIME 유형으로 바꾸십시오. 일부 태그에서 중첩 시키거나 서버 측 xsl 변환 중에 기본 경고로 주석을 제거하지 않는 것으로 중첩됩니다. 이제 global.asax 내에 다음 C# 로직을 구현하십시오.

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 (acceptEncoding == null || acceptEncoding.Length == 0) 
     return; 

    acceptEncoding = acceptEncoding.ToLower(); 

    if (acceptEncoding.Contains("gzip")) 
    { 
     // gzip 
     app.Response.Filter = new GZipStream(prevUncompressedStream, 
      CompressionMode.Compress); 
     app.Response.AppendHeader("Content-Encoding", "gzip"); 
    }  /*else if (acceptEncoding.Contains("deflate") || acceptEncoding == "*") 
    { 
     // defalte 
     app.Response.Filter = new DeflateStream(prevUncompressedStream, 
      CompressionMode.Compress); 
     app.Response.AppendHeader("Content-Encoding", "deflate"); 
    }*/ // Only cache for X seconds. 
Response.Cache.SetExpires(DateTime.Now.AddMonths(9)); 
Response.Cache.SetMaxAge(new TimeSpan(270, 0, 0,0,0)); 
Response.Cache.SetCacheability(HttpCacheability.Public); 
Response.Cache.SetValidUntilExpires(true); 

// Sliding expiration means we reset the X seconds after each request. 
// SetETag is required to work around one aspect of sliding expiration. 
Response.Cache.SetSlidingExpiration(true); 
Response.Cache.SetETagFromFileDependencies(); 

}