2014-05-12 2 views
1

큰 페이지 더미의 aspx 페이지가있는 솔루션이 있습니다. 우리는 또한 CSS/js 파일이 상대적으로 정기적으로 변경되는 환경에서 작업합니다 (내 개발 팀보다 훨씬 더 자주 선호합니다). 이러한 CSS/j를 변경하면 사용자에게 캐시 충돌이 발생하여 사용자에게 문제가됩니다. 우리는 일반적으로 캐시를 지우도록 지시하고 모든 것을 해결하지만 곧 캐시를 지우라고 말할 필요는 없습니다. 전체 솔루션에서 HTTP 응답 헤더 (캐시 지우기)

그래서 나는 그들의 캐시를 지우려면 사용자를 얻기 위해 내가 여기에 주문 본 게시물에서 HTML 응답 헤더를 사용 :

Response.AppendHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1. 
Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.0. 
Response.AppendHeader("Expires", "0"); // Proxies. 

이 확실히 작동하는 것 같군. 또한 새로 고침 강제로 우리의 js 파일에 쿼리 문자열 매개 변수를 사용하는 방법에 대한 생각 :

<script src="../js/jquery-1.4.2.min.js?v=1" type="text/javascript"></script> 

가능성이 우리 JS/CSS를 캐싱 문제를 도움이 될 것입니다,하지만 난 그 캐시되는 유일한 페이지 내용입니다 확신 아니에요 (및 이로써 주요 출시 도중 오류가 발생 함).

일단 HTML 응답 헤더를 사용하여 목표를 달성했다면 만료도 적용 할 계획입니다.

질문 : 우리 솔루션의 모든 단일 ASP에 응답 헤더를 추가해야합니까? 상위 프레임으로로드하고 자식 iframe에 캐시 지우기를 "상속"시킬 수 있습니까? 그렇지 않은 경우 마스터 페이지에 넣을 수 있고 콘텐츠 페이지가 마스터 페이지에서 헤더를받을 수 있습니까? 어떤 통찰력도 좋을 것입니다.

답변

0

마스터 페이지를 사용중인 경우 여기에 헤더를 설정하면 충분합니다.

더 널리, 우리가이 시나리오 처리 방법은 말하기 :

  1. 우리는 크루즈 컨트롤은 각 빌드 (예 : "2014-05-13.001")
  2. 에 대한 릴리스 ID를 포함하는 텍스트 파일을 생성하는 데 사용을
  3. .net에서는 StreamReader를 사용하여 현재 buildId를 가져 와서 을 Application 개체에 저장합니다.
  4. id를 querystring 매개 변수로 모든 CSS 및 JS 파일 참조에 추가합니다.

이렇게하면 버전을 출시 할 때마다 모든 CSS 및 JS 파일이 삭제되고 다시로드됩니다. 단점은 모두 파일이 삭제 된 것뿐 아니라 수정 된 파일도 삭제되었지만 공개 버전을 많이 만들지 않았기 때문에 다른 방법보다 낫습니다.

+0

' 보호 문자열 getRandomStr() { 난수 R = 새로운 임의 '는 C# 함수 와 '(); int rando = r.Next(); return rando.ToString(); } ' 내가 아는 한 마스터 페이지에서 작동합니다. 개인 aspx 페이지에 대해 더 염려합니다. 방금 Masters에는 Page_PreInit이 없다는 것을 알게되었으므로 C# 측에 걸림돌이됩니다. JS/CSS 버전 구현부터 시작하여 거기에서부터 시작하겠습니다. – RockiesMagicNumber

+1

난수 접근 방식의 단점은 파일이 캐싱되지 않으므로 이상적이지 않으며 모든 페이지로드 속도를 늦출 것입니다. – graphicdivine

+0

좋은 지적. 나는 버전을 조사 할 것이다. – RockiesMagicNumber