2011-06-10 8 views
4

나는 파일 이름이 변경 될 때 브라우저 캐시 JS 파일의 새 버전을 가져 오기 위해 강제 또는 쿼리 문자열이 추가되는 것으로 알고 있습니다.브라우저 캐싱 자바 스크립트와 CSS 파일을

우리는이 작업을 수행하지 않고 지금까지 우리는 브라우저가 오래된 파일을 제공 문제를 가진 적이 없었습니다. 최근에 우리는 IE9를 사용하는 일부 사용자가 캐싱 된 JS/CSS 파일을 제공하는 브라우저에 대해 불평하는 것을보고 있습니다. 이 문제는 사이트를 사용하는 모든 사용자에게 일관성이 없습니다.

나의 이해는 파일 이름이나 쿼리 문자열이 변경되지 않지만, JS 파일 내용이 변경 될 때, 브라우저가 새 버전을 가져올 것입니다.

왜 이런 일이 발생하며 그 이유는 무엇입니까?

의견이 있으십니까?

+4

그리고 어떻게 브라우저가 "마술"내용이 파일을 요청하지 않고 변경된 것을 알아내는 것입니까? 브라우저는 URL을 단독으로 사용합니다. – riwalk

답변

0

예를 들어 크롬 Shift + F5 때까지 스크립트를 캐시 또는 약간의 시간이 (그것도 요청을 보내지 않고이 서버에 변경 사실을 무시) 만료되었습니다. 그래서 다른 브라우저에 의해 이루어집니다

(그러나 캐시가 활성화 된 경우) - 그런 일이 정확히 언제 내가 descripe 수 없습니다

1
내용이 동일 (즉, 같은 파일 이름)을 보이는 경우

예, 사용자는 캐시 된 버전을받을 수 있습니다 후속 방문시 해당 파일의

그것은 그것을 캐싱을 처리하는 방법을 결정하기 위해 각각의 특정 브라우저에 달려 있으며 사용자에게 달려이기도합니다 ... 당신의 통제 할 수없는 정말 ... 일부는 정기적으로 캐시를 덤프 또는 무언가가 보이지 않는 경우 페이지를 새로 고침 권리.

당신이 업데이트 된 CSS 나 JS 컨텐츠를 볼 수있는 CSS 나 JS 파일 이름을 변경하도록 강제 할 경우

는 ... 그렇지 않으면 시간이 짧은,하지만 알 수없는, 기간 일치하지 않을 수 있습니다. 정적 자원에 대한 HTTP 헤더의 유효 기간 또는 최대 보존 기간을 설정

이 튜토리얼은 당신을 도울 수는 ...

http://www.mnot.net/cache_docs/

4

이상보다는 로컬 디스크에서 이전에 다운로드 한 자원을로드하는 브라우저에 지시 네트워크.

리소스를 실제로 캐시하려면이 방법이 유용합니다. 새로운 다운로드를 강제 실행하려는 경우 no-cache를 설정하면 캐시가 항상 캐시 된 복사본을 릴리스하기 전에 원본 서버에 요청을 제출하여 유효성을 검사하도록합니다. 이는 캐싱의 모든 이점을 희생하지 않고 인증이 존중되고 (공개와 함께) 존중 받거나 엄격한 신선도를 유지하는 데 유용합니다.

HTTP Server-Specified Expiration - specs

+0

특정 JS 파일의 만료 날짜가있는 HTTP 헤더를 어떻게 설정합니까? 기본적으로 만료 값은 무엇입니까? – Dusty

+0

웹 서버에 설정해야합니다. 따라서 어떤 웹 서버/버전을 실행 중인지에 따라 다릅니다 :-) –