2011-11-22 1 views
15

javascript 또는 css 파일의 last_modified_time을 사용하고 파일의 수정시 바스트 캐쉬에 이름의 키로 유닉스 타임 스탬프를 사용하기로 결정한 경우. 다음 두 가지 방법의 차이점은 무엇입니까? 파일 이름은 다음과 같습니다 my_script.js를 타임 스탬프는 다음과 같습니다 <script type="text/javascript" src="http://example.com/js/my_script.js?v=1321951817"></script> 따라서, 쿼리 문자열 매개 변수가 매번 v가 변경 될 때 새 캐시를 만듭니다으로 1,321,951,817캐싱을 피하기위한 자바 버전 관리, 이러한 관행의 차이점은 무엇입니까?

1/파일이 포함됩니다. 아래의 응답에 따라 ONE MORE 방법 : <script type="text/javascript" src="http://example.com/js/my_script.1321951817.js"></script> 모든 수정과 파일 이름 변경, 재 작성 규칙이 my_script.js

3/UPDATE에 타임 스탬프 및 포인트 요청 된 URL을 제거합니다으로

2/파일이 포함됩니다 : 파일의 이름이 바뀌며 다음과 같이 포함됩니다. <script type="text/javascript" src="http://example.com/js/my_script.1321951817.js"></script> 파일 이름이 변경되고 NO REWRITE RULE이 사용됩니다.

질문 :이 두 가지 기술은 본질적으로 동일하거나 직접 파일 이름 대신 쿼리 문자열 매개 변수를 사용하는 데있어 장점/단점이 있습니까?

+1

'http : // example.com/v-1321951817/js/my_script.js' 대신 파일 이름 대신 경로 이름을 사용하는 방법 2)을 사용할 수도 있습니다. – user123444555621

답변

22

업데이트 된 쿼리 문자열을 사용하는 것은 좋지 않은 솔루션입니다. Steve souders의 의견을 확인하십시오. http://www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/

이상적인 방법은 파일 자체의 이름을 바꾸는 것입니다. 사람들은 마지막 수정 날짜의 타임 스탬프를 사용하는 것을 선호합니다. 문제가 있다고 생각합니다.

현대 웹 개발에서는 가능한 한 많은 페이지를 최적화해야합니다. 즉, CSS와 자바 스크립트를 하나의 파일로 결합하는 것입니다. 즉, 프로세스에 빌드 단계를 도입하고 파일의 마지막 수정 시간은 항상 마지막 빌드에있게됩니다. 이를 파일 이름으로 설정하면 기본적으로 사용자 캐시가 항상 파열되며 필요할 때가 있습니다.

파일의 md5 합계를 파일 이름으로 바꾸는 것이 좋습니다. 그렇게하면 항상 새로운 빌드를 할 수 있지만 파일 이름은 내용이 변경된 경우에만 변경됩니다. 그러면 파일 이름이 내용의 식별자가됩니다. 이 기능을 사용하면 모든 정적 컨텐츠에 대한 미래의 만료 헤더를 설정할 수 있으며 더 이상 걱정할 필요가 없습니다.

이 워크 플로가 지루해지기 때문에 빌드 시스템을 사용하는 것이 좋습니다. 웹 페이지를 최적화하는 많은 다른 작업 중에서 내 회사가 오픈 소스를 오픈했습니다. https://github.com/One-com/assetgraph-builder 동일한 기능을하는 많은 다른 빌드 도구가 있습니다. 주위를 둘러보고 개발 설정에 가장 적합한 것을 찾으십시오.

+0

"이상적인 방법은 파일 자체의 이름을 바꾸는 것입니다." 이것이 재 작성 규칙보다 나은 이유는 무엇입니까? – user123444555621

+3

타임 스탬프를 사용하지 않는 또 다른 이유는 여러 서버에 배포하는 경우 마지막 수정 날짜가 변경 될 수 있기 때문입니다. 파일의 MD5를 사용하면 배포 할 위치 나 위치에 관계없이 일관성을 유지할 수 있습니다. – TimE

6

직접 말하고 있습니다. 두 번째 예제에서는로드하는 모든 페이지를 정규식으로 검사하는 다시 쓰기 규칙을 사용하고 있습니다.

첫 번째 것은 브라우저를 속여서 다른 파일이라고 생각하는 것입니다. 그래서 첫 번째 방법은 갈 길입니다.

+1

나는 동의한다, 첫번째 선택은가는 길이다. – kamui

+0

@baklap 귀하의 요점에 동의하십시오. 그러나 내 버전 관리 스크립트는 파일의 이름을 바꾸며 다시 쓰기 규칙은 사용되지 않습니다. 그러면 더 나은 무엇입니까? – DhruvPathak