정적 콘텐츠 만 제공하는 사이트에 대한 IIS 7.5 최적화


21

스택 교환 사이트에서 사용 하는 http://sstatic.net/ 사이트 와 비슷한 웹 응용 프로그램에 정적 콘텐츠를 제공하기 위해 쿠키가없는 도메인을 설정하려고 합니다.

제 질문은, 그러한 도메인에 대한 IIS 7.5 설정에 어떤 최적화를 할 수 있습니까? 예를 들어 정적 콘텐츠를 제공하는 것 외에는 책임을지지 않으므로이 사이트에서 ASP.NET 통합을 사용하지 않도록 설정하는 것이 좋을까요?

IIS 7.5를 사용하여 이러한 사이트를 설정하는 데 대한 제안이나 참조가 가장 좋습니다.

편집하다

명확히하기 위해 이것은 서버의 유일한 사이트가 아니므로 제안 된 최적화는 서버 수준 구성이 아닌 사이트 수준을 대상으로해야합니다.

답변:


18

여기에는 IIS (HTTP 압축, 캐싱 헤더 fx)에서 처리되고 일부는 빌드 프로세스 중 / 배포 전 (예 : Javascript 및 CSS 파일 연결 및 공백 축소)에서 처리되는 몇 가지 고려 사항이 있습니다.

따라서 일부 답변은 빌드 및 릴리스 방법에 따라 다르므로 한 번의 답변으로 완전한 요약을 제공하기가 약간 어렵습니다. 높은 수준의 단계에서 :

  • 귀하의 웹 응용 프로그램과 연결되지 않은 새로운 도메인을 사용함으로써이 사이트는 "쿠키가 없습니다". 도메인에 쿠키를 설정하지 않기 때문에 (fx .NET 응용 프로그램 코드 사용) "쿠키리스"입니다.

  • Javascript 및 CSS와 같은 정적 텍스트 컨텐츠에 대해 HTTP 압축을 절대적으로 사용해야합니다 .

  • 저는 가장 훌륭한 IIS 관리자는 아니지만 기본 "IIS (Web Server)"서버 역할 과 관련된 기본 IIS 구성 요소 만 있으면됩니다 .

  • 당신이해야 절대적으로 가능하게 정적 콘텐츠에 대한 긴 캐싱 헤더를 . 일반적인 권장 사항은 31 일이지만 더 높거나 낮게 설정할 수 있습니다. 긴 캐시 헤더가있는 정적 컨텐츠를 제공하는 경우, 클라이언트가 캐시 된 오래된 컨텐츠를 재사용하지 않도록 파일을 변경하면 URL을 변경해야합니다.

  • 당신은 해야 HTTP 연결 유지 (헤더 캐시와 같은 문서를) 할 수 있습니다.

이 외에도, 다음과 같은 사전 deployement 작업, 거기에 자바 스크립트와 CSS를 압축 공백 , 그리고 이상적으로 압축 PNG의 더 나은 등의 개발 도구가 있었고, 빌드주기가 진행하는 방법을 결정하는 데 도움이되는이.

완료되면 YSlow가 활성화 된 정적 서버 에서 몇 개의 파일을 다운로드하십시오 . 나는 것을 발견 "클래식 V2"규칙 집합 나는이 YSlow에 룰 세트에 대해 점수를 확인 제안 있도록, 노력에 대한 가장 큰 영향을 준다.

"Classic V2"규칙 세트 중 다음 규칙은 정적 서버 IIS 인스턴스 및 컨텐츠에 깔끔하게 적용됩니다.

3. Add an Expires or a Cache-Control Header
4. Gzip Components
10. Minify JavaScript and CSS
11. Avoid Redirects
13. Configure ETags
19. Use Cookie-Free Domains for Components
22. Make favicon.ico Small and Cacheable

귀하의 의견에 감사드립니다 : 귀하가 언급 한 사전 제작 고려 사항을 이미 처리했습니다. 내가 실제로 따르는 것은 IIS 구성의 핵심입니다. 정적 콘텐츠 외에는 아무것도 없기 때문에 http 파이프 라인 등에서 많은 것을 제거 할 수 있다고 가정합니다.
DanP

1
@ DanP : IIS를 설정하는 데 실제로 많은 일이 이루어지지 않았습니다. Microsoft는 "기본적으로 안전한"최소 구성을 제공하는 데 능숙합니다. 기본 서버 역할의 일부인 IIS 구성 요소를 제거하여 성능을 최적화하는 것은 IMHO 조기 최적화입니다. 정적 파일 서비스는 일반적으로 서버로드가 매우 낮기 때문에 성능 향상이 그만한 가치가 없다는 것을 거의 보장 할 수 있습니다. 최종 사용자 성능을 위해 중요한 부분은 위의 문서에 따라 HTTP 캐싱, 헤더 캐싱, 압축, 킵 얼라이브를 올바르게 얻는 것입니다.
Jesper M

기본값은 정적 파일 제공을 위해 설계되었습니다. 웹 서버 역할 만 추가하면 정적 파일을 제공하기위한 최소 파이프 라인이 설정됩니다. 따라서 파이프 라인을 최소화하려면 다른 것을 설치하지 마십시오!
TristanK

@ TristanK : 좀 더 구체적이어야한다고 생각합니다 ... 이것은 IIS 서버의 유일한 사이트가 아니므로 서버 수준이 아닌 사이트 수준에서 최적화해야합니다.
DanP

예, 그것은 중요한 정보입니다. 이것이 선택한 경로라고 결정한 경우, a) 비교할 새 경로를 설치하고, b) precondition = "을 사용하여 제거하려는 모듈 / 핸들러 (기본 설치의 일부가 아닌)를 표시합니다. AppPoolName! = StaticPool "(구문이 거꾸로있을 수 있음). 주어진 응용 프로그램 풀에 모듈을 포함 / 제외하는 것이 거의 같습니다.
TristanK

9

거기에 아주 재미있는 쓰기 여기까지 누군가가 정적 파일을 제공하기 위해 IIS를 사용하고 있습니다. 주로 IIS 파일 캐싱 설정을 조정하여 병목 현상이 발생한 디스크 활동을 제한합니다. 그는 성능이 20 배 향상되었다고 말했다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.