development

Apache httpd (MAMP)에서 http 파일 캐싱을 방지하는 방법

big-blog 2020. 7. 1. 07:36
반응형

Apache httpd (MAMP)에서 http 파일 캐싱을 방지하는 방법


MAMP에서 단일 페이지 Javascript 응용 프로그램을 개발 중입니다. JavaScript와 HTML 템플릿 파일이 요청간에 캐시됩니다.

http 파일 캐싱을 방지하고 싶다고 MAMP에 표시하는 간단한 방법이 있습니까? 아마도와 .htaccess파일? .htaccessMac에서 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을 랜덤 화하는이 방법은 예를 들어, 아약스 jQuery 요청의 캐시없는 설정의 기본입니다. 브라우저는 다른 쿼리 문자열을 가진 2 개의 URL이 동일하다고 간주하지 않으며 캐시 된 버전을 사용하지 않습니다.

편집하다

mod_headers 테스트해야합니다 . mod_headers가있는 경우 헤더 키워드를 사용하여 Expires 헤더를 직접 설정할 수 있습니다 .


<FilesMatch "\.(js|css)$">
  ExpiresActive On
  ExpiresDefault A1
  Header append Cache-Control must-revalidate
</FilesMatch>

참고 URL : https://stackoverflow.com/questions/11532636/how-to-prevent-http-file-caching-in-apache-httpd-mamp

반응형