2016-06-21 3 views
1

.htaccess 파일에 만료 헤더를 추가했는데 실제로 작동하지 않는 것 같습니다.브라우저에서 Expires 헤더를 무시하고 있습니다.

Firefox와 Chrome에서 결과를 확인하면 (F12 키를 누르고 네트워크 옵션을 선택하고 F5 키를 눌러 페이지를 다시로드 함) 파일에 추가 한 규칙이 무시되는 것을 알 수 있습니다.

# ---------------------------------------------------------------------- 
# | ETags                | 
# ---------------------------------------------------------------------- 

# Remove `ETags` as resources are sent with far-future expires headers. 
# 
# https://developer.yahoo.com/performance/rules.html#etags 
# https://tools.ietf.org/html/rfc7232#section-2.3 

# `FileETag None` doesn't work in all cases. 
<IfModule mod_headers.c> 
    Header unset ETag 
</IfModule> 

FileETag None 

# ---------------------------------------------------------------------- 
# | Expires headers             | 
# ---------------------------------------------------------------------- 

# Serve resources with far-future expires headers. 
# 
# (!) If you don't control versioning with filename-based 
# cache busting, you should consider lowering the cache times 
# to something like one week. 
# 
# https://httpd.apache.org/docs/current/mod/mod_expires.html 

<IfModule mod_expires.c> 

    ExpiresActive on 
    ExpiresDefault          "access plus 1 month" 

    # CSS 

    ExpiresByType text/css        "access plus 1 year" 


    # Data interchange 

    ExpiresByType application/atom+xml     "access plus 1 hour" 
    ExpiresByType application/rdf+xml     "access plus 1 hour" 
    ExpiresByType application/rss+xml     "access plus 1 hour" 

    ExpiresByType application/json      "access plus 0 seconds" 
    ExpiresByType application/ld+json     "access plus 0 seconds" 
    ExpiresByType application/schema+json    "access plus 0 seconds" 
    ExpiresByType application/vnd.geo+json    "access plus 0 seconds" 
    ExpiresByType application/xml      "access plus 0 seconds" 
    ExpiresByType text/xml        "access plus 0 seconds" 


    # Favicon (cannot be renamed!) and cursor images 

    ExpiresByType image/vnd.microsoft.icon    "access plus 1 week" 
    ExpiresByType image/x-icon       "access plus 1 week" 

    # HTML 

    ExpiresByType text/html        "access plus 0 seconds" 


    # JavaScript 

    ExpiresByType application/javascript    "access plus 1 year" 
    ExpiresByType application/x-javascript    "access plus 1 year" 
    ExpiresByType text/javascript      "access plus 1 year" 


    # Manifest files 

    ExpiresByType application/manifest+json    "access plus 1 week" 
    ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds" 
    ExpiresByType text/cache-manifest     "access plus 0 seconds" 


    # Media files 

    ExpiresByType audio/ogg        "access plus 1 month" 
    ExpiresByType image/bmp        "access plus 1 month" 
    ExpiresByType image/gif        "access plus 1 year" 
    ExpiresByType image/jpeg       "access plus 1 year" 
    ExpiresByType image/png        "access plus 1 year" 
    ExpiresByType image/svg+xml       "access plus 1 month" 
    ExpiresByType image/webp       "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 fonts 

    # Embedded OpenType (EOT) 
    ExpiresByType application/vnd.ms-fontobject   "access plus 1 month" 
    ExpiresByType font/eot        "access plus 1 month" 

    # OpenType 
    ExpiresByType font/opentype       "access plus 1 month" 

    # TrueType 
    ExpiresByType application/x-font-ttf    "access plus 1 month" 

    # Web Open Font Format (WOFF) 1.0 
    ExpiresByType application/font-woff     "access plus 1 month" 
    ExpiresByType application/x-font-woff    "access plus 1 month" 
    ExpiresByType font/woff        "access plus 1 month" 

    # Web Open Font Format (WOFF) 2.0 
    ExpiresByType application/font-woff2    "access plus 1 month" 


    # Other 

    ExpiresByType text/x-cross-domain-policy   "access plus 1 week" 

</IfModule> 

그리고이 브라우저에 표시된 헤더입니다

boilerplate에서 복사 된 규칙이다. 보시다시피, 스크립트 및 스타일 시트와 같은 구성 요소는 한 달 후에 만료되고 이미지는 두 달 후에 만료됩니다.

스타일 시트 헤더 :

Cache-Control: max-age=2592000, public 
Content-Encoding: gzip 
Content-Type: text/css 
Date: Tue, 21 Jun 2016 16:06:22 GMT 
Expires: Thu, 21 Jul 2016 16:06:22 GMT 

스크립트 헤더 :

Cache-Control: max-age=2592000, public 
Content-Encoding: gzip 
Content-Type: application/javascript 
Date: Tue, 21 Jun 2016 16:06:22 GMT 
Expires: Thu, 21 Jul 2016 16:06:22 GMT 

이미지 헤더 :

Cache-Control: max-age=5184000, public 
Connection: keep-alive 
Date: Tue, 21 Jun 2016 16:10:13 GMT 
Expires: Sat, 20 Aug 2016 16:10:13 GMT 

솜이 있습니까 내가 이것에 대해 할 수있는 일은?

+1

"내가 파일에 추가 한 규칙이 무시되고 있음을 알았습니다." 이 부분에 대해 좀 더 자세히 설명해 주시겠습니까? 어떻게 알았어? –

+0

@FlorianLemaitre 네 말이 맞아, 이것에 대한 좀 더 많은 정보를 추가했다. 고맙습니다. –

답변

0

먼저 웹 서버가 보내는 정확한 헤더에 대해 curl -IL "(URL)"로 확인하십시오.

둘째, Chrome에서 '캐시 무시'확인란을 선택하지 않았는지 확인합니다.

셋째, 컬, 크롬 및 파이어 폭스에서 액세스 로그가 이러한 요청을 할 때 무엇이라고 말합니까?

편집 : 실제 응답은 만료 모듈이 실제로 활성화되었는지 확인하는 것이 었습니다.

+0

1.이 명령은 다음 정보를 반환했습니다. 최종 수정 : 2014 년 6 월 20 일 18:08:38 GMT. 캐시 제어 : max-age = 0. 만료 : Tue, 2016 년 6 월 21 일 18:54:03 GMT. 2. 아니요, 확인하지 않았습니다 .. 3. curl -v를 사용하여 다음을 반환했습니다. 날짜 : 2014 년 6 월 21 일 19:12:34 GMT. 연결 : 연결 유지. 최종 수정 : 2016 년 6 월 20 일 18:08:38 GMT. 캐시 제어 : max-age = 0. 만료 : Tue, 2016 년 6 월 21 일 19:12:34 GMT. Firefox의 Addon HTTP Request Logger는 사이트를 방문 할 때 다운로드 한 파일 만 표시했습니다. 로그를 볼 수있는 좀 더 유용한 방법이 있는지 말해 줄 수 있습니까? –

+1

그래서 mod_expires.c 모듈을 설치하거나 사용하지 않았다고 생각합니다. 여기에 설명 된대로 mod_expires.c 모듈을 활성화했는지 확인하십시오. http://www.absolutelytech.com/2010/08/02/howto-enable-or-disable-modules-in-apache/ –

+0

내 호스팅 제공 업체는 다음을 수행해야합니다. 기본적으로이 기능을 사용하도록 설정 했더니 확인해 보겠다고했습니다. 그래서 나는 응답을 기다려야 할 것 같아요. 그동안, 대단히 감사합니다. –