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.