IIS 및 정적 컨텐츠?
브라우저가 서버에서 검색하는 파일은 서버 왕복을 최소화할 수 있도록 브라우저의 캐시에 가능한 길게 저장해야 합니다.
그러나 IIS는 정적 컨텐츠가 실제로 무엇인지와 그렇지 않은지 어떻게 알 수 있습니까?
이미지, CSS, JS뿐이지 ASPX, asx...?
IIS에서 이미 정적으로 간주되는 것과 정적으로 간주되지 않는 것을 어디에서 볼 수 있습니까?
페이지가 다음과 같이 선언된 시나리오는?
<%@ OutputCache
함글) 없음)location
)입니까 ?images
,CSS
그리고.JS
그 안에 있는 소스 파일들도 같은 속성으로 출력 캐시되고 있습니까?가장 좋은 방법은 미래로 1년을 최대 유효기간으로 설정하는 것입니다.사이트의 모든 정적 컨텐츠에 대한 기본값으로 사용해야 합니다.
그래서 이렇게 했습니다.
하지만 나중에 누른 후에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를 개발하고 있습니다.그러니 이 위치가 정확한지 확인할 수 있으면 댓글 달아주세요!
- 정적 컨텐츠는 IIS를 읽고 아무런 처리 없이 브라우저로 전송하는 컨텐츠입니다.여기서 IIS를 설정하여 일부를 포함할 수 있습니다.
Cache-Control Header
클라이언트 브라우저 컴퓨터에 캐시할 수 있습니다. - 직접 설정 IIS를 통해 이를 수행할 수 있으며 명령어를 통해 이를 수행할 수 있습니다.
web.config
당신이 말하듯이.web.config에 추가하고 IIS와 관련된 명령은 asp.net 자체와는 관계가 없지만 IIS 및 IIS는 구성을 다른 파일에 저장하므로 해당 캐시 제어 헤더를 IIS에서 직접 변경하면 web.config에서 볼 수 없습니다. - 이미지, CSS, 자바스크립트 및 기타 유사한 파일과 같은 정적 컨텐츠의 경우 10년이 만료되면 "절대 만료되지 않음" 정책을 따를 수 있다고 말합니다.
- 여기서 문제는 정적 파일의 내용을 변경할 수 없는 경우, 예를 들어 10년이 경과한 자바스크립트 파일을 캐시하고 그 위에 작은 변경을 가하면 파일 이름을 변경할 수 있고, 그 끝에 매개 변수를 추가할 수 있는 에테르가 필요하다는 것입니다.
- 는.
<%@ OutputCache
컨트롤은 클라이언트가 아닌 서버 캐시로 지칭되며 실제로 수행되는 작업은 서버에서 컨트롤의 렌더링을 캐시하여 다음 번에 다시 렌더링할 시간을 낭비하지 말고 캐시에서 읽으라고 요청할 때 여전히 브라우저로 전송합니다.
그리고 이 답변을 좀 더 자세히 읽어 볼 수도 있습니다.IIS(Dynamic and Static) 캐시, OutPutCache 및 브라우저 캐시의 차이점
언급URL : https://stackoverflow.com/questions/14211992/iis-and-static-content
'programing' 카테고리의 다른 글
Android에서 사용되는 아키텍처 패턴은 무엇입니까? (0) | 2023.09.17 |
---|---|
CSS에서 @apply란 무엇입니까? (0) | 2023.09.17 |
sqalchemy 세션에서 개체 새로 고침 정보 (0) | 2023.09.17 |
요소 이름에 대한 대소문자 규칙? (0) | 2023.09.17 |
Sql Server 2005 dbo 로그인 이름 변경하는 방법 (0) | 2023.09.17 |