문제

CSS and Javascript 파일이 변하지 않고 매우 자주,그래서 나는 그들을 캐시는 웹 브라우저입니다.하지만 나 또한 웹 브라우저를 변경사항을 확인하가 이러한 파일을 요구하는 사용자의 브라우저 캐시입니다.또한 원하는 작동할 수 있는 솔루션을 잘 버전과 제어 시스템 등의 파괴.


일부 솔루션을 보았을 포함 추가하는 버전 번호의 끝에서 파일 형태 쿼리의 문자열입니다.

을 사용할 수 있습 SVN 버전 번호를 자동화하는 이 당신을 위해: ASP.NET 디스플레 SVN 개정 번호

할 수 있는 방법을 지정 포함 개정 변수의 또 다른 파일은?에 HTML 파일을 포함할 수 있 개정 번호에서 URL 을 CSS 나 자바스크립트 파일입니다.

Subversion 예약 에 대해 말한 내역:"이 키워드를 설명합니다 마지막으로 알려진 개정에서는 이 파일에서 변경된 저장소".

파이어 폭스도를 누르 CTRL+R 다시 모든 것을 특정 페이지입니다.

을 명확히 나를 위한 솔루션이 필요하지 않은 사용자가 아무것도 할 수 있습니다.

도움이 되었습니까?

해결책

내가 찾는 경우 추가 마지막 수정된 시간에 파일의 URL 끝에 브라우저는 요청을 파일을 때 그것을 수정합니다.예를 들어 PHP:

function urlmtime($url) {
   $parsed_url = parse_url($url);
   $path = $parsed_url['path'];

   if ($path[0] == "/") {
       $filename = $_SERVER['DOCUMENT_ROOT'] . "/" . $path;
   } else {
       $filename = $path;
   }

   if (!file_exists($filename)) {
       // If not a file then use the current time
       $lastModified = date('YmdHis');
   } else {
       $lastModified = date('YmdHis', filemtime($filename));
   }

   if (strpos($url, '?') === false) {
       $url .= '?ts=' . $lastModified;
   } else {
       $url .= '&ts=' . $lastModified;
   }

   return $url;
}

function include_css($css_url, $media='all') {
   // According to Yahoo, using link allows for progressive 
   // rendering in IE where as @import url($css_url) does not
   echo '<link rel="stylesheet" type="text/css" media="' .
        $media . '" href="' . urlmtime($css_url) . '">'."\n";
}

function include_javascript($javascript_url) {
   echo '<script type="text/javascript" src="' . urlmtime($javascript_url) .
        '"></script>'."\n";
}

다른 팁

일부 솔루션을 보았을 포함 추가하는 버전 번호의 끝에서 파일 형태 쿼리의 문자열입니다.

<script type="text/javascript" src="funkycode.js?v1">

사용할 수 있습니다 SVN 개정 번호를 자동화 을 위해 당신 을 포함하여 말씀 LastChangedRevision 에 html 파일 후에는 v1 가 나타납니다.해야 합니다 또한 설정을 저장소습니다.

나는 희망이 더 명확히 나의 대답은?

파이어 폭스도를 누르 CTRL + R 다시 모든 것을 특정 페이지입니다.

내 생각에,그것은 더 나은 버전 번호를 만들의 부분 파일 자체의 예: myscript.1.2.3.js.당신은 설정할 수 있습니다 당신의 웹 서버를 캐시 이 파일은 영원히고,추가로 새로운 js 파일이 있을 때 새로운 버전입니다.

할 때 새로운 버전을 출시하 CSS 또는 JS 라이브러리,원인은 다음을 발생합니다.

  1. 수정한 파일이름을 포함한 버전이 문자열
  2. 수정 HTML 파일을 참조 라이브러리점에서 버전이 지정된 파일

(이것은 일반적으로 아주 간단한 문제에 대한 해 스크립트)

지금 당신은 설정할 수 있습니다 만료에 대한 CSS/JS 수 년에는 미래입니다.때마다의 콘텐츠를 변경할 경우를 참조하 HTML 포인트는 새로운 URI,브라우저를 사용하지 않습니다 더 이상 오래된 캐시 복사본입니다.

이렇게 캐싱하려는 동작을 필요로하지 않고도 사용됩니다.

또한 궁금 이렇게 하는 방법을 발견했을 때 그롬의 대답이다.에 대한 감사 코드입니다.

쳤는 방법을 이해 코드를 했는데 사용할 수 있습니다.(나는 사용하지 않습니다) 요약하면,당신은 포함한 타임스탬프(ts)할 때 호출됩니다.당신은 계획을 변경하는 스타일 시트를 자주:

<?php 
    include ('grom_file.php');
    // timestamp on the filename has to be updated manually
    include_css('_stylesheets/style.css?ts=20080912162813', 'all');
?>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top