나는 어떻게 브라우저에 보 CSS and Javascript 변화는?
-
08-06-2019 - |
문제
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 라이브러리,원인은 다음을 발생합니다.
- 수정한 파일이름을 포함한 버전이 문자열
- 수정 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');
?>