IIS는 정적 콘텐츠 콘텐츠 압축 및 동적 콘텐츠 콘텐츠 압축의 두 가지 유형의 압축을 지원합니다. applicationHost.config에 따르면 DynamicCompressionModule (compdyn.dll)과 StaticCompressionModule (compstat.dll)의 다른 모듈에서 처리되며은 개의 다른 요청을 압축하도록 구성되어 있습니다. 또한 정적 압축 (기본적으로 압축 된 파일은 %SystemDrive%\inetpub\temp\IIS Temporary Compressed Files
에 저장 됨)과 달리 동적 압축이 압축 된 요청을 캐시하지 않는다고 생각합니다.IIS7 : 정적 및 동적 콘텐츠 압축의 차이점
그러나 명백한 차이점 외에도 다른 점이 있다고 생각합니다. 저는 IIS 파이프 라인에 약간 다른 방식으로 연결되어 있다고 생각합니다. 아무도 더 자세한 내용을 내부에 넣을 수 있습니까?
내가 알아 낸 방법은 I was toying with a custom module for modifying CSS files on fly입니다. 정적 압축이 켜졌을 때 (그리고 텍스트/CSS와 같은 기본 파일 세트를 처리하도록 설정된 경우) 캐시 된 요청에 대해 내 맞춤 모듈이 이미 압축 된 콘텐츠를 제공 받았습니다. text/css를 동적으로 압축 된 요청 목록으로 이동하면 모든 작업이 시작되었습니다. 그러나 나는 그것을 실제로하는 올바른 방법이라는보다 견고한 증거를 갖고 싶습니다. 다른 알려진 결과/문제점이 있습니까?
업데이트 : 나는 왜 그런 일이 벌어지는 지에 대한 이론을 가지고 있다고 생각합니다. 그것은 100 % 정확하지 않을 수도 있지만 적어도 관찰 된 행동을 설명 할 수 있습니다. 나는 정적 압축 모듈 (일부 다른 사람의 사이에서) 다음 이벤트에 자신을 등록하는 생각 :
RQ_MAP_REQUEST_HANDLER
RQ_EXECUTE_REQUEST_HANDLER
그리고 정적 파일에 대한 요청이 제공 될 때, OnMapRequestHandler 검사에서 정적 압축 모듈은 파일이 압축되어 있는지 여부 이전에 그리고 실제 파일이 변경되지 않았는지 여부. 그렇다면 요청을 자신에게 다시 매핑합니다 (IMapHandlerProvider을 사용하여 적절한 리디렉션을 반환 함). 나중에 OnExecuteRequestHandler의 응답을 실제로 처리하면 압축 파일을 보냅니다. 반면에 파일이 이전에 압축되지 않았거나 변경된 경우 매핑 리디렉션을 수행하지 않고 정적 콘텐츠 모듈이 요청을 처리하도록하고 나중에 OnPostExecuteRequestHandler이 콘텐츠를 압축하고 캐시를 업데이트합니다. . 위에서 언급했듯이, 이것이 정확히 무슨 일이 일어나고 있는지 (소스 코드를 모른다는) 말은 아니며, 단지 근사치 일 수도 있습니다. 또한 동적 압축 모듈은이 중 하나를 수행하지 않습니다. RQ_EXECUTE_REQUEST_HANDLER 다음에 보내는 응답을 압축합니다.