IIS7에서 폴더 및 확장마다 정적 콘텐츠 캐시를 구성하는 방법은 무엇입니까?


143

ASP.NET 웹 사이트에서 정적 콘텐츠 캐싱에 대한 IIS7의 규칙을 설정하고 싶습니다.

이 기사를 보았습니다.이 <clientCache />요소는 web.config다음 의 요소를 사용하여 수행하는 방법을 자세히 설명합니다 .

클라이언트 캐시 <clientCache>(IIS.NET)
IIS의 정적 콘텐츠에 만료 또는 캐시 제어 헤더 추가 (스택 오버플로)

그러나이 설정은 모든 정적 콘텐츠에 전체적으로 적용되는 것으로 보입니다. 특정 디렉토리 나 확장명에 대해서만이를 수행 할 수있는 방법이 있습니까?

예를 들어 별도의 캐시 설정이 필요한 두 개의 디렉토리가있을 수 있습니다.

/static/images
/content/pdfs

그것은 (캐시 헤더를 보내는 규칙을 설정할 수 있습니다 max-age, expires확장 및 폴더 경로에 따라, 등)?

web.configIIS 콘솔에 액세스 할 수 없기 때문에이 작업을 수행 할 수 있어야합니다 .

답변:


217

루트 중 하나에서 전체 폴더에 대해 특정 캐시 헤더를 설정할 수 있습니다 web.config.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <!-- Note the use of the 'location' tag to specify which 
       folder this applies to-->
  <location path="images">
    <system.webServer>
      <staticContent>
        <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="00:00:15" />
      </staticContent>
    </system.webServer>
  </location>
</configuration>

또는 web.config컨텐츠 폴더 의 파일에서이를 지정할 수 있습니다 .

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <staticContent>
      <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="00:00:15" />
    </staticContent>
  </system.webServer>
</configuration>

특정 파일 형식을 대상으로하는 메커니즘이 내장되어 있지 않습니다.


1
큰. IIS 7에 관한 책을 추천 하시겠습니까? 이런 것들에 대해 배우고 싶습니다. 감사.
— vtortola

5
@vtortola-[IIS7 리소스 키트] (: amazon.co.uk/dp/0735624410 )에는 문제가 없습니다. 실제로 매우 유용합니다. Wrox 사 프로 IIS7의 책 중 하나 나쁘지 않다. TBH 필자는 주로 IIS.NET 구성 참조 사이트 ( iis.net/ConfigReference) 와 %systemroot%\system32\inetsrv\config\applicationhost.config파일 및 관련 친구에 대한 정보를 통해 배웠습니다 .
— Kev

7
이것이 재귀인지 아는 사람이 있습니까? 예를 들어 이미지 경로 아래에 하위 폴더가있는 경우 하위 폴더도 캐시합니까?
— StuffandBlah

1
주목해야 할 것은 브라우저가 path=""대소 문자를 구분 하는 것으로 보입니다.
— Chris S

9
@StuffandBlah 예, 재귀입니다. 방금 직접 시도해 IIS가 "location"으로 지정한 폴더의 하위 폴더에있는 모든 파일 요청에 동일한 캐시 제어 설정을 적용했습니다.
— Erik Öjebo 2016 년

68

파일 단위로 수행 할 수 있습니다. 경로 속성을 사용하여 파일 이름을 포함하십시오.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <location path="YourFileNameHere.xml">
        <system.webServer>
            <staticContent>
                <clientCache cacheControlMode="DisableCache" />
            </staticContent>
        </system.webServer>
    </location>
</configuration>

1
그리고 특정 확장자의 모든 파일에 적용하려면? .xml 또는 * .xml 만 작동합니까?
— Zulgrib

2
@Zulgrib에서 특정 확장에 적용하려면 아웃 바운드 다시 쓰기 규칙을 사용할 수 있습니다. stackoverflow.com/questions/32987486/…
— jotap

@Zulgrib 하나 이상의 파일에 위치 태그를 사용하는 방법은 있지만 모든 유형의 파일은 아닙니다. 예를 들어 루트 폴더에 jpg 파일이 몇 개 있습니까?
— Rahatur

-2

나는 같은 문제를 겪었다. 나에게 문제는 이미지에 대한 캐시 제한을 구성하는 방법이었다. 그리고 나는이 사이트를 방문하여 문제를 처리하는 방법에 대한 절차에 대한 통찰력을 얻었습니다. : [ https://varvy.com/pagespeed/cache-control.html]


2
stackoverflow.com/help/how-to-answer에 따라 링크에서 답변에 정보를 추가하는 것을 고려하십시오 : 외부 리소스에 대한 링크가 권장되지만 링크 주위에 컨텍스트를 추가하여 동료 사용자가 무엇인지 알 수 있습니다 그리고 왜 거기에 있습니다. 대상 사이트에 도달 할 수 없거나 영구적으로 오프라인 상태가되는 경우 항상 중요한 링크의 가장 관련성있는 부분을 인용하십시오.
— 그렉 인크 레더 러스
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.