2013-01-02 1 views
3

나는 사용자로서 스스로 'F5'를 눌러 캐시를 지우거나 지울 수 있다고 알고있다.정적 웹 사이트의 최신 버전이 표시되고 있는지 어떻게 확인합니까?

웹 디자이너의 관점에서 볼 때 더 많은 것을 만들 수 있는지 궁금하다. "자동"으로, 많은 사용자가이를 알지 못할 수도 있습니다.

동적 사이트의 경우 서버 측 "마법"으로 수행 할 수 있습니다.

비슷한 질문에 대한 일부 대답은 .htaccess를 어떤 식 으로든 수정한다는 의미이므로이 문제를 조사 할 것입니다. 그러나 누군가 정적 사이트에서 작동하는 "빠른 팁"또는 코드 스 니펫을 가지고 있다면 그럴 것입니다.

사이트에서 사용되는 유일한 PHP는 문의 양식 용이므로 자동으로 이메일을 발송할 수 있습니다. 사이트의 나머지 부분은 단지 이미지, 텍스트 등입니다.

+6

아래의 모든 대답은 당신을 위해 그것을 할 것이지만 캐싱은 좋은 것임을 기억하십시오! 캐싱은 사용자가 데이터를 더 적게 다운로드해야한다는 것을 의미하며 웹 서버는 적은 양의 데이터를 처리해야하므로 사용하지 마십시오. – Liam

+0

이 페이지의 "Etags 구성"을 살펴보십시오. http://developer.yahoo.com/performance/rules.html. 캐싱이 언제 어떻게 작동하는지 설명합니다. – Liam

답변

8

일종의 JS 솔루션으로 캐시를 지울 수는 없지만 일 수 있습니다. 귀하의 웹 사이트에 대한 새로운 배포/업데이트마다 캐시가 삭제됩니다. css/js의 끝에 가짜 버전/etc 번호를 추가하십시오. 사용자가 사이트를 다시 방문 할 갈 때 URL이 자동으로 다시로드됩니다 다를 수 있기 때문에 그들은을 보장, main.css?v=1.51과 :

main.css?v=1.5 
myCode.js?v=123 

다음 시간 당신은 단지 약간 변경, 업데이트 : 예를 들어

가장 최신 스타일 시트를 사용하고 있습니다.

+0

+1 - 물론 타임 스탬프 나 파일의 해시를 사용하여 자동화 할 수 있으므로 생각할 필요조차 없습니다 (자동화에는 도구 또는 서버 측 언어가 필요하지만). – Fenton

+0

나는이 간단한 사이트에서 작동 할 것이라고 생각합니다. 나는 둘 다 사용할 필요가 없다고 생각합니다. 그래서 저는 CSS를 사용했습니다. 감사! 이것이 제가 여기서 질문한 첫 번째 질문입니다. 어쩌면 결국 나는 내 자신의 몇 가지 대답에 "충분히 똑똑하게"될 것입니다. – VisWebsoft

+0

@ ManavMisra 사용자 정의 컨트롤 안에 CSS/JS가 모두 포함되어 있으면 즉시 하나의 번호를 업데이트하는 것만 큼 쉽습니다! 백엔드 제어 변수를 사용하여 업데이트 할 수도 있습니다. –

1

시도 : 당신의 "정적"웹 사이트 내 모든 이미지에 대한

<img src="image/path.jpg?t=<?=time();?>" /> 

. * .html 파일로 작업 할 때 javascript를 사용하여 onload 이벤트 내의 모든 이미지를 "다시로드"할 수 있습니다.

+1

이 대답의 유일한 단점은 코드를 업데이트 할 때만 변경 될 수있는 정적 파일에 대한 캐싱을 완전히 없애는 것입니다. –

3

포함 된 파일의 끝에 캐시 바 스팅 변수를 추가해보십시오. 예 : main.js을 포함하는 대신 main.js?d=20120102을 포함하십시오. JS/CSS 파일은 변수를 무시하지만 변수는 클라이언트가 캐시되지 않은 새 파일이라고 생각하게합니다. 그런 다음 파일을 업데이트 할 때 변수를 쉽게 변경할 수 있습니다.

0

이렇게하려면 몇 가지 방법이 있습니다.

당신은 캐시와 원래 서버로 요청을 리디렉션하지 않는 브라우저를 직접 정적 HTML 페이지에서 캐시 메타 정보를 설정할 수 있습니다,이

<?php 
    //set headers to NOT cache a page 
    header("Cache-Control: no-cache, must-revalidate"); //HTTP 1.1 
    header("Pragma: no-cache"); //HTTP 1.0 
    header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past 
같은 헤더를 설정할 수 있습니다 PHP를 사용

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE"> 
<meta http-equiv="cache-control" content="max-age=0" /> 
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE"> 

.htaccess을 사용하여 캐싱을 수행하지 않을 수도 있습니다. 이를 위해 mod_headers을 사용하도록 설정해야합니다. 이 스 니펫을 .htaccess 파일에 넣기 만하면됩니다. 나는 그들의 "미리 만들어진"htaccess로를 통해 전송 확인하고 바로 HTML5의 상용구 (http://html5boilerplate.com/)를 사용하고,하여

<filesMatch ".(html|htm|js|css)$"> 
FileETag None 
<ifModule mod_headers.c> 
Header unset ETag 
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate" 
Header set Pragma "no-cache" 
Header set Expires "Wed, 11 Feb 1994 08:00:00 GMT" 
</ifModule> 
</filesMatch> 
0

, 내 사이트가 잘 표시 업데이트입니다.

솔직하게 말해서 파일을 실제로 보지 못했지만 여기에 설명 된 개념 중 일부가 통합되어있을 것입니다.

관련 문제