2017-03-02 4 views
0

내 사이트의 모든 JS를 일주일 동안 캐시하도록 설정했습니다. 그러나 더 높은 빈도로 새로 고쳐야하는 특정 파일이 있습니다. 따라서 나는 나의 htaccess로 파일에 예외를 초래하는 FilesMatch을 사용하고 있습니다 :htaccess의 변경 사항 브라우저에 반영되지 않는 헤더 만료

<IfModule mod_expires.c> 

    ExpiresActive on 
    ExpiresDefault          "access plus 1 month" 

    # CSS 
    ExpiresByType text/css        "access plus 1 year" 

    # Data interchange 
    ExpiresByType application/json      "access plus 0 seconds" 
    ExpiresByType application/xml      "access plus 0 seconds" 
    ExpiresByType text/xml        "access plus 0 seconds" 

    # Favicon (cannot be renamed!) 
    ExpiresByType image/x-icon       "access plus 1 week" 

    # HTML components (HTCs) 
    ExpiresByType text/x-component      "access plus 1 month" 

    # HTML 
    ExpiresByType text/html        "access plus 0 seconds" 

    # JavaScript 
    ExpiresByType text/javascript      "access plus 1 week" 
    ExpiresByType application/javascript    "access plus 1 week" 
    ExpiresByType application/x-javascript    "access plus 1 week" 

    # Manifest files 
    ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds" 
    ExpiresByType text/cache-manifest     "access plus 0 seconds" 

    # Media 
    ExpiresByType audio/ogg        "access plus 1 month" 
    ExpiresByType image/gif        "access plus 1 month" 
    ExpiresByType image/jpeg       "access plus 1 month" 
    ExpiresByType image/jpg       "access plus 1 month" 
    ExpiresByType image/png        "access plus 1 month" 
    ExpiresByType video/mp4        "access plus 1 month" 
    ExpiresByType video/ogg        "access plus 1 month" 
    ExpiresByType video/webm       "access plus 1 month" 

    # Web feeds 
    ExpiresByType application/atom+xml     "access plus 1 hour" 
    ExpiresByType application/rss+xml     "access plus 1 hour" 

    # Web fonts 
    ExpiresByType application/font-woff     "access plus 1 month" 
    ExpiresByType application/vnd.ms-fontobject   "access plus 1 month" 
    ExpiresByType application/x-font-ttf    "access plus 1 month" 
    ExpiresByType font/opentype       "access plus 1 month" 
    ExpiresByType image/svg+xml       "access plus 1 month" 

</IfModule> 
<FilesMatch "^(ga\.js)$"> 
    ExpiresActive on 
    ExpiresDefault "access plus 2 days" 
</FilesMatch> 

예외 파일이 /sandboxassets/js/ga.js에 내가 함께 일하고 htaccess로 이 문서 루트 (/)에 있습니다. 그러나, 브라우저는이 예외를 존중하는 것 문제의 파일에 대해 다음과 같은 헤더를 제공하지 않습니다

Accept-Ranges:bytes 
Access-Control-Allow-Origin:* 
Age:0 
Cache-Control:max-age=604800 
Content-Encoding:gzip 
Content-Length:11967 
Content-Type:application/javascript 
Date:Thu, 02 Mar 2017 15:03:55 GMT 
Expires:Thu, 09 Mar 2017 15:03:55 GMT 
Last-Modified:Thu, 02 Mar 2017 15:00:01 GMT 
Server:Apache Phusion_Passenger/4.0.10 mod_bwlimited/1.4 mod_fcgid/2.3.9 
Vary:Accept-Encoding,User-Agent 
Via:1.1 varnish-v4 
X-Varnish:18808880 

604,800초 내 의 .htaccess에 정의 된 모든 JS 자산의 기본 인 1 주일하지만 172800 초 (2 일)가되어야합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 또한 최신 헤더로 새로 고치도록 브라우저에 알리는 방법이 있습니까? 오페라는 내가 최근에 모든 JS에 대해 1 주로 변경 한 31536000 초 (1 년)를 반환합니다!

업데이트 : 나는 <IfModule mod_expires.c> 내부에 먼저 추가 한 후 즉시 후 같은 오류 매번 경험

<Directory "/sandboxassets/js/"> 
    AllowOverride All 
    <FilesMatch "ga\.js$"> 
     Expires A172800 
    </FilesMatch> 
    <FilesMatch "tww\.js$"> 
     Expires A172800 
    </FilesMatch> 
</Directory> 

: 다음 코드를 사용하여 500 내 사이트에 오류가 완전히 무너 뜨리는 원인이되는 .

답변

0

첫 번째 경향은 디렉토리 타겟 블록 내에서 'AllowOverride'를 사용하여 특정 파일을 무시할 수 있어야한다는 것입니다.

<Directory "/directory/to/your/file"> 
    AllowOverride All 
    <FilesMatch "\.js$"> 
     Expires A31536000 
    </FilesMatch> 
</Directory> 

소스 (들) : http://www.websiteoptimization.com/secrets/advanced/caching-example.html

내가보기 엔 당신은 아무것도 배제하기 전에이의 테스트를 할 CloudFlare을 해제하는 것이 좋습니다.

또한이 질문에 대한 답변을 확인하는 것이 도움이 될 수 있습니다 : 나는 이것이 주문 문제 가능성도 있다고 생각하기 때문에 내가 이것을 추가하고 https://webmasters.stackexchange.com/questions/9513/htaccess-execution-order-and-priority

. .htaccess는 루트에서 시작하여 디렉토리를 통해 작동합니다.

+0

이 코드는 내 사이트를 완전히 파괴하고 있습니다. 내가 사용한 정확한 코드로 질문을 업데이트했습니다. – TheLearner

+0

어. 미안합니다. 나는 주변을 찌를 것이고 내가 찾을 수있는 다른 것을 볼 것이다. – malodie