programing

IIS 및 정적 컨텐츠?

css3 2023. 9. 17. 13:27

IIS 및 정적 컨텐츠?

초고속 ASP에 따르면.NET: 3장 - 캐싱:

브라우저가 서버에서 검색하는 파일은 서버 왕복을 최소화할 수 있도록 브라우저의 캐시에 가능한 길게 저장해야 합니다.

  • 그러나 IIS는 정적 컨텐츠가 실제로 무엇인지와 그렇지 않은지 어떻게 알 수 있습니까?

    이미지, CSS, JS뿐이지 ASPX, asx...?

    IIS에서 이미 정적으로 간주되는 것과 정적으로 간주되지 않는 을 어디에서 볼 수 있습니까?

  • 페이지가 다음과 같이 선언된 시나리오는?<%@ OutputCache함글) 없음)location )입니까 ?images,CSS그리고.JS 안에 있는 소스 파일들도 같은 속성으로 출력 캐시되고 있습니까?

  • 가장 좋은 방법은 미래로 1년을 최대 유효기간으로 설정하는 것입니다.사이트의 모든 정적 컨텐츠에 대한 기본값으로 사용해야 합니다.

그래서 이렇게 했습니다.

Set Common HTTP Response Headers

하지만 나중에 누른 후에OK, 응답 헤더를 이미 넣은 사용자를 표시하는 요약 메뉴를 찾을 없습니다.css폴더).

지금은 그걸 보기 위해서.css헤더가 되었습니다 - - -야로 가야 합니다.css폴더를 다시 --> Response Header 답--> 머리글 -->그리고 난 그걸 봅니다.web.config에는 기록되어 있지 않습니다.

하지만 내가 파일을 위해 그것을 한다면,Login.aspx◦): .config:web.config에서 있습니다.

<configuration>
    <location path="Login.aspx">
        <system.webServer>
            <staticContent>
                <clientCache cacheControlMode="UseExpires" cacheControlMaxAge="1.00:00:00" httpExpires="Fri, 15 Feb 2013 00:00:00 GMT" />
            </staticContent>
        </system.webServer>
    </location>
</configuration>

저는 당신의 상황을 이해합니다.IIS가 파일을 처리하는 방식이 혼란스러울 때가 있습니다.IIS 6과 IIS 7의 경우에도 다르며 클래식 앱 풀 및 통합 모드 앱 풀의 경우에도 다릅니다.제 경험은 대부분 IIS 7.5의 Integrated App Pool과 관련이 있기 때문에 가장 정확하게 설명할 수 있는 환경입니다.

첫번째 질문

그러나 IIS는 무엇이 실제로 정적 컨텐츠이고 무엇이 그렇지 않은지 어떻게 알 수 있습니까?

이미지, css, js뿐이지 ASPX, asx...?

IIS에서 정적으로 이미 간주된 것과 그렇지 않은 것을 어디에서 볼 수 있습니까?

웹 사이트로 이동한 후 '핸들러 매핑'을 클릭하여 IIS의 파일 핸들러 목록을 검사할 수 있습니다.기본적으로 이들은 에서 상속됩니다.사용자에 따라 다른 위치에 있는 Netbase web.config.넷 프레임워크 버전.

  • C:\Windows\Microsoft.NET\프레임워크\v2.0.50727\CONFIG\web.config
  • C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config

않은 파일은 핸들러에 됩니다( 인 이 에 으로 를 를 ).*으로 ( ) 으로 ( )System.Web.DefaultHttpHandler정적 파일인지 디렉토리 탐색 요청인지를 결정합니다.따라서 정적 파일은 이미 다른 핸들러에 바인딩되어 있지 않은 파일일 뿐입니다.예를 들어, 여러분은 보게 될 것입니다.*.aspx에미어다다에 .System.Web.UI.PageHandlerFactory이 기본 처리기 이전에 실행할 수 있습니다.따라서 해당 핸들러에 의해 처리되며 정적 파일로 간주되지 않습니다.이 매핑을 제거한 경우 기술적으로 *.aspx를 정적 파일로 제공할 수 있습니다(작동 방식을 증명하기 위해).

web.을 "web.config" httpHandlers "에 .System.Web.StaticFileHandler에서예를 들어,

<configuration>
  <system.webServer>
    <handlers>
      <add name="StaticHandler" verb="*" path="*.zip" type="System.Web.StaticFileHandler" preCondition="integratedMode" />
    </handlers>
  </system.webServer>
</configuration>

에서는 는 을 합니다 합니다를 합니다.<system.webServer>통합 모드에서 실행되는 앱 풀에 대한 구성 섹션입니다.

두번째 질문

페이지가 <%@ OutputCache 헤더(위치 없음)로 선언된 시나리오는 어떻습니까? 그 안에 있는 이미지, css, js src 파일도 동일한 속성으로 출력 캐시되고 있습니까?

아니요. 페이지는 별도의 요청으로 서버화되기 때문에(다른 핸들러에 의해서도) 완전히 다른 캐시 헤더/힌트를 가질 수 있습니다.호스트 페이지와 호스트 페이지가 사용할 수 있는 리소스는 캐싱 관점에서 관련이 없습니다.

실제로 *.html의 캐시 기간은 더 짧고 *.jpg 또는 *.png의 캐시 기간은 더 길어지기를 원할 수도 있습니다.고려해야 할 것.

세번째 질문

최선의 연습으로는 미래로 1년을 최대 유효기간으로 정해야 합니다.사이트의 모든 정적 컨텐츠에 대한 기본값으로 사용해야 합니다.

음... 1년까지는 못 갈 것 같아요.한달은 어때요?다음과 같이 글로벌 정책을 설정합니다.

<configuration>
  <system.webServer>
    <staticContent>
      <!-- Set expire headers to 30 days for static content-->
      <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:00:00" />
    </staticContent>
  </system.webServer>
</configuration>

하지만, Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ, Δ Δ<location>에 근소,에로에다은다에 있습니다<configuration>요소이므로 기본 정책입니다.역시 는 통합 모드에서 실행되는 앱 풀에 대한 것입니다.때로는 다음을 설정해야 합니다.

<configuration>
    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true">
            <!-- stuff -->
        </modules>
    </system.webServer>
<system.webServer>

이렇게 하면 위 구성 요소를 존중하는 관리되는 정적 파일 처리기를 통해 정적 파일이 처리됩니다.

주석을 처리하기 위해 편집

위에 게시한 구성 대화상자에 대한 설명서가 여기에 있습니다: HTTP Expires Response Header 구성(IIS 7)

다음 설정이 C에 저장되어 있는 것 같습니다.\Windows\시스템32\inetsrv\config\applicationHost.config

저는 IIS 7을 가지고 있지 않고 개인적으로 지금 IIS 7.5를 개발하고 있습니다.그러니 이 위치가 정확한지 확인할 수 있으면 댓글 달아주세요!

  1. 정적 컨텐츠는 IIS를 읽고 아무런 처리 없이 브라우저로 전송하는 컨텐츠입니다.여기서 IIS를 설정하여 일부를 포함할 수 있습니다.Cache-Control Header클라이언트 브라우저 컴퓨터에 캐시할 수 있습니다.
  2. 직접 설정 IIS를 통해 이를 수행할 수 있으며 명령어를 통해 이를 수행할 수 있습니다.web.config당신이 말하듯이.web.config에 추가하고 IIS와 관련된 명령은 asp.net 자체와는 관계가 없지만 IIS 및 IIS는 구성을 다른 파일에 저장하므로 해당 캐시 제어 헤더를 IIS에서 직접 변경하면 web.config에서 볼 수 없습니다.
  3. 이미지, CSS, 자바스크립트 및 기타 유사한 파일과 같은 정적 컨텐츠의 경우 10년이 만료되면 "절대 만료되지 않음" 정책을 따를있다고 말합니다.
  4. 여기서 문제는 정적 파일의 내용을 변경할 수 없는 경우, 예를 들어 10년이 경과한 자바스크립트 파일을 캐시하고 그 위에 작은 변경을 가하면 파일 이름을 변경할 수 있고, 그 끝에 매개 변수를 추가할 수 있는 에테르가 필요하다는 것입니다.
  5. 는.<%@ OutputCache컨트롤은 클라이언트가 아닌 서버 캐시로 지칭되며 실제로 수행되는 작업은 서버에서 컨트롤의 렌더링을 캐시하여 다음 번에 다시 렌더링할 시간을 낭비하지 말고 캐시에서 읽으라고 요청할 때 여전히 브라우저로 전송합니다.

그리고 이 답변을 좀 더 자세히 읽어 볼 수도 있습니다.IIS(Dynamic and Static) 캐시, OutPutCache 및 브라우저 캐시의 차이점

언급URL : https://stackoverflow.com/questions/14211992/iis-and-static-content