IIS7 캐시 제어
나는 상당히 간단하다고 생각했던 것을 시도하고있다. IIS 7을 사용하여 클라이언트에게 특정 시간 (예 : 24 시간) 동안 내 사이트의 모든 이미지를 캐시 할 수 있음을 알립니다.
http://www.galcho.com/Blog/post/2008/02/27/IIS7-How-to-set-cache-control-for-static-content.aspx 에서 단계를 시도 했지만 아무 소용이 없습니다. 나는 여전히 304s가 반환되는 서버로가는 요청을받습니다.
누구든지 이것을 할 방법이 있습니까? 나는 그래픽 집약적 인 사이트를 가지고 있으며 사용자가 페이지를 요청할 때마다 내 서버도 망치고 있습니다. 이상하게도 이미지에 "Cache-Control private, max-age = 3600"이 Firebug에 표시되는 것처럼 보이지만 F5를 누르면 브라우저가 여전히 이미지를 요청합니다.
Cache-Control 헤더를 설정하려는 경우 슬프게도 IIS7 UI에는이를 수행 할 수있는 것이 없습니다.
그러나이 web.config를 설정하려는 폴더 또는 사이트의 루트에 놓을 수 있습니다.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" />
</staticContent>
</system.webServer>
</configuration>
그러면 해당 폴더와 모든 하위 폴더에서 7 일 동안 콘텐츠를 캐시하도록 클라이언트에 알립니다.
다음과 같이을 통해 IIS7 메타베이스를 편집하여이 작업을 수행 할 수도 있습니다 appcmd.exe
.
\ Windows \ system32 \ inetsrv \ appcmd.exe "기본 웹 사이트 / 폴더"구성 설정 -section : system.webServer / staticContent -clientCache.cacheControlMode : UseMaxAge \ Windows \ system32 \ inetsrv \ appcmd.exe "기본 웹 사이트 / 폴더"구성 설정 -section : system.webServer / staticContent -clientCache.cacheControlMaxAge : "7.00 : 00 : 00"
사실 Jeff가 아닙니다.
IIS 7 관리자 UI 내에서 폴더 (예 : 이미지 또는 이벤트 기본 웹 응용 프로그램 폴더)를 선택한 다음 "HTTP 응답 헤더"를 클릭하기 만하면됩니다. 그런 다음 오른쪽 창에서 "Set Common Header .."를 클릭하고 "Expire Web content"를 선택해야합니다. "이후 :"를 선택하고 텍스트 상자에 "24"를 입력하고 콤보 상자에서 "시간"을 선택하여 24 시간의 최대 연령을 쉽게 구성 할 수 있습니다.
web.config 항목에 관한 첫 번째 단락이 맞습니다. cacheControlCustom-attribute를 추가하여 캐시 제어 헤더를 "public"으로 설정하거나이 경우 필요한 모든 것을 설정합니다.
물론 필요에 따라 web.config 항목 (또는 파일)을 제공하여 동일한 작업을 수행 할 수 있습니다.
편집 : 혼란스러운 문장 제거 :)
나는 이것을 사용한다
<staticContent>
<clientCache cacheControlCustom="public" cacheControlMode="UseMaxAge" cacheControlMaxAge="500.00:00:00" />
</staticContent>
공개 캐시 제어 헤더로 500 일 동안 정적 콘텐츠를 캐시합니다.
F5 새로 고침은 "현재 HTML 및 직접 종속성을 다시로드하십시오"라는 의미를 갖습니다 . 따라서 HTML에서 직접 참조하는 imgs, css 및 js 리소스도 다시 가져 오는 것을 볼 수 있습니다. 물론 304는 이에 대한 허용 가능한 응답이지만 F5 새로 고침은 브라우저가 새로운 캐시 콘텐츠에 의존하지 않고 요청을 할 것임을 의미합니다.
대신 다른 곳으로 이동 한 다음 다시 탐색 해보십시오.
대부분의 브라우저에서 Ctrl 키를 누른 상태에서 F5 키를 누르면 304를 지나서 강제로 새로 고침을 수행 할 수 있습니다.
내 편집이 롤백되면서 Elmer의 답변을 보완합니다.
public cache-control header를 사용 하여 365 일 동안 정적 콘텐츠를 캐시하려면 IIS를 다음과 같이 구성 할 수 있습니다.
<staticContent>
<clientCache cacheControlCustom="public" cacheControlMode="UseMaxAge" cacheControlMaxAge="365.00:00:00" />
</staticContent>
This will translate into a header like this:
Cache-Control: public,max-age=31536000
Note that max-age is a delta in seconds, being expressed by a positive 32bit integer as stated in RFC 2616 Sections 14.9.3 and 14.9.4. This represents a maximum value of 2^31 or 2,147,483,648 seconds (over 68 years). However, to better ensure compatibility between clients and servers, we adopt a recommended maximum of 365 days (one year).
As mentioned on other answers, you can use these directives also on the web.config of your site for all static content. As an alternative, you can use it only for contents in a specific location too (on the sample, 30 days public cache for contents in "cdn" folder):
<location path="cdn">
<system.webServer>
<staticContent>
<clientCache cacheControlCustom="public" cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:00:00"/>
</staticContent>
</system.webServer>
</location>
there is a easy way: 1. using website's web.config 2. in "staticContent" section remove specific fileExtension and add mimeMap 3. add "clientCache"
<configuration>
<system.webServer>
<urlCompression doStaticCompression="true" doDynamicCompression="true" />
<staticContent>
<remove fileExtension=".ipa" />
<remove fileExtension=".apk" />
<mimeMap fileExtension=".ipa" mimeType="application/iphone" />
<mimeMap fileExtension=".apk" mimeType="application/vnd.android.package-archive" />
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="777.00:00:00" />
</staticContent>
</system.webServer>
</configuration>
참고URL : https://stackoverflow.com/questions/642954/iis7-cache-control
'developer tip' 카테고리의 다른 글
유닉스에서 타임 스탬프에 따라 파일을 정렬하는 방법은 무엇입니까? (0) | 2020.09.05 |
---|---|
PHP에서 객체가 비어 있는지 확인하는 방법은 무엇입니까? (0) | 2020.09.05 |
BeautifulSoup에서 xpath를 사용할 수 있습니까? (0) | 2020.09.04 |
ASP.NET : HTTP 오류 500.19 – 내부 서버 오류 0x8007000d (0) | 2020.09.04 |
Java의 객체 인 배열 (0) | 2020.09.04 |