2009-02-02 3 views
17

당신이 Stackoverflow.com의 소스를 보면 당신은 자신의 CSS 파일에 대한 참조를 볼 수있다 :Stackoverflow와 같은 쿼리 문자열을 사용하여 CSS 파일의 버전을 관리합니까?

가 쿼리 문자열을 통해 버전을 전달하고 올바른 CSS 파일까지 제공 할 수 있도록이 수행되는 방법
<link href="/Content/all.min.css?v=2383" rel="stylesheet" type="text/css" /> 

?

+0

이 초기 질문에 대한 설명을 참조하십시오 : [CSS 링크에서 무엇입니까?] (http://stackoverflow.com/questions/438821/what-does-do-in-a-css-link/438828 # 438828) –

+0

그래서이 경우 무엇입니까? 동적으로 생성 되었습니까? – mmcdole

+0

그 대답에 묘사 된대로 거의 확실하지 않습니다. –

답변

4

그래서 브라우저가 css 파일을 캐시하지 않습니다. 버전 번호를 사용하면 CSS 파일이 각 버전에서 변경 될 수 있으므로 편리합니다.

올바른 CSS 파일을 호출하는 방법이 아닙니다. 파일은 항상 같지만 버전 번호는 브라우저에서 다르게 생각하고 다시 가져옵니다.

+0

그래서 파일을 복사 할 때 물리적 파일 이름이 있습니까? "all.min.css? v = 2383"? 캐싱을 막는 데 사용된다는 것을 알고 있습니다. – mmcdole

+0

파일과 아무 관련이 없습니다. 이 코드는 페이지의 코드에 추가되었습니다. 파일 이름은 여전히 ​​all.min.css입니다. –

+0

그리고 이것은 실제로 캐싱을 막지는 못하지만 번호가 변경 될 때마다 새 URL이기 때문에 페이지가 다시로드됩니다. 하지만 이전 URL은 캐시 된 상태로 유지됩니다. – Bombe

5

This (PHP example) 기사 뒤에 아이디어가 있습니다. 기본적으로 파일을 마지막으로 수정 한 타임 스탬프가 발생할 수 있습니다. 이렇게하면 CSS를 변경할 때마다 쿼리 문자열이 바뀌고 브라우저가 새 버전을 다운로드하게됩니다. 이것은 CSS와 JS 파일 모두에 유효합니다.

ASP.NET 샘플은 이것이다 :

public static string GetBreaker(string fileName) 
{ 
    string cacheBreaker = null; 
    try 
    { 
     if (fileName.StartsWith("~")) 
     { 
      fileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName.Remove(0)); 
     } 
     cacheBreaker = File.GetLastWriteTime(fileName).ToFileTime().ToString(); 
    } 
    catch { } 

    return string.IsNullOrEmpty(cacheBreaker) ? string.Empty : string.Format("?cachebreaker={0}", cacheBreaker); 
} 

그리고 당신은 이런 방식으로 MasterPage에서이 메서드를 호출 : 당신이 그것을 수행하는 방법, 그들은 곧 알고 싶다면

<link href="<%= this.ResolveClientUrl("~/CSS/style.css") %><%=CacheBreaker.GetBreaker("~/CSS/style.css") %>" 
      rel="stylesheet" type="text/css" /> 
2

이전 블로그 항목에서 언급했습니다. 빌드 프로세스에 의해 자동으로 수행됩니다. See this blog post (세 번째 글 머리 기호).

불행히도 세부 사항은 없지만 블로그 게시물에 댓글을 달거나 stackoverflow 팀에 문의하여 자세한 정보를 얻을 수 있습니다.

-4

동일한 효과를 얻기 위해 파일을 변경할 때마다 파일 이름을 변경하는 것이 더 쉬울 수 있습니다.

file001.css 
file002.css 

나는 같은 파일 이름을 유지하고 ?ver=1234를 추가하는 소스 제어 쉽게하는 것입니다 느낌이있다.

관련 문제