MAMP에서 단일 페이지 Javascript 응용 프로그램을 개발 중입니다. 내 JavaScript 및 HTML 템플릿 파일이 요청간에 캐시됩니다.
http 파일 캐싱을 방지하고 싶다고 MAMP에 표시하는 간단한 방법이 있습니까? 아마도와 .htaccess
파일? .htaccess
Mac에서 MAMP 용 가상 호스트를 어디에 배치 하거나 수정합니까?
답변
이것을 시도? 모두에서 작동합니다 .htaccess
, httpd.conf
하고의 VirtualHost
(보통 배치에 httpd-vhosts.conf
당신이에서를 포함 한 경우의 httpd.conf)
<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 Jan 1984 05:00:00 GMT"
</ifModule>
</filesMatch>
100 % 파일 캐시 방지
이는 프록시 및 클라이언트가 광고를 캐싱하는 것을 방지하기 위해 Google 광고가 Cache-Control : private, x-gzip-ok = “”> 헤더를 사용하는 방식과 유사합니다.
에서 http://www.askapache.com/htaccess/using-http-headers-with-htaccess.html
또한 선택적으로 확장자가 아닌 다른 확장자를 사용하는 경우 검색중인 템플리트 파일의 확장자를 추가하십시오 .html
.
답변
여기 예제를 기반으로 : http://drupal.org/node/550488
다음은 아마 .htaccess에서 작동합니다.
<IfModule mod_expires.c>
# Enable expirations.
ExpiresActive On
# Cache all files for 2 weeks after access (A).
ExpiresDefault A1209600
<FilesMatch (\.js|\.html)$>
ExpiresActive Off
</FilesMatch>
</IfModule>
답변
같은 문제가 있었지만 여기서 좋은 해결책을 찾았
습니다 .MAMP에서 PHP 5.5.3의 캐싱 중지
기본적으로 php.ini 파일을 찾아 OPCache 라인을 주석 처리하십시오. 이 대안 적 답변이 다른 사람들에게도 도움이되기를 바랍니다.
답변
mod_expires 가 없으면 파일에 만료 헤더를 설정하기가 더 어려워집니다. 생성 된 내용에 대해 mod_expires 작업을 수행하여 응답에 기본 헤더를 설정할 수 있습니다.
<?php header('Expires: '.gmdate('D, d M Y H:i:s \G\M\T', time() + 3600)); ?>
(에서 가져온 : @brianegge의 스택 오버플로 답변 , mod_expires 솔루션도 설명되어 있습니다)
이제는 자바 스크립트 파일과 같은 정적 파일 에서는 작동하지 않습니다 . 정적 파일의 경우 브라우저와 소스 파일 사이에는 아파치 (만료 모듈 없음)가 있습니다. 브라우저에서 수행되는 자바 스크립트 파일의 캐싱을 방지하기 위해 js URL의 끝에 임의의 토큰 을 사용할 수 있습니다 ?rd=45642111
. URL은 다음과 같습니다.
<script type="texte/javascript" src="my/url/myjs.js?rd=4221159546">
페이지의이 URL이 PHP 파일에 의해 생성되면 PHP로 임의의 부분을 추가 할 수 있습니다. 랜덤 쿼리 문자열 파라미터를 단순히 추가하여 URL을 랜덤 화하는이 방법은 예를 들어 ajax jQuery 요청의 캐시없는 설정의 기본 사항입니다. 브라우저는 다른 쿼리 문자열을 가진 2 개의 URL이 동일한 것으로 간주하지 않으며 캐시 된 버전을 사용하지 않습니다.
편집하다
mod_headers 테스트해야합니다 . mod_headers가있는 경우 헤더 키워드를 사용하여 Expires 헤더를 직접 설정할 수 있습니다 .
답변
<FilesMatch "\.(js|css)$">
ExpiresActive On
ExpiresDefault A1
Header append Cache-Control must-revalidate
</FilesMatch>