W3 Total Cache, CDN 및 테마 파일 [닫힘]


10

최근에 WordPress 설치의 style.css 파일을 업데이트했습니다. 변경 사항이 적용되었습니다 : 관리자로 로그인했을 때 (내 블로그는 관리자에게 캐시 된 버전의 사이트가 아니라 "실시간"버전으로 제공되도록 설정되어 있습니다.)

그러나 내 블로그는 CDN (W3 Total Cache 사용)을 통해 제공됩니다. CDN을 통해 변경 사항이 적용되지 않습니다. CDN은 내 테마에서 수정 된 파일을 제공하지 않습니다. 수정 후 업로드했지만 (Dashboard> Performance> CDN> Upload theme files).

내 CDN은 AmazonCloud Front에서 실행됩니다. W3 Total Cache에서는 Minify가 비활성화되어 있습니다.

내 CDN을 통해 제공되는 테마 파일은 압축 된 버전입니다. style.css.gzip

CDN에서 객체를 "퍼지"하거나 조금 더 기다려야합니다 (1 주일 이상). 그리고 네, 변경 사항이 적용되는 것을 확인하기 위해 사용중인 브라우저의 캐시를 비 웁니다. 아니면 내가 놓친 다른 것이 있습니까?

감사,

피.

답변:


10

당신은 중 하나를해야

  1. 파일을 호출하여 파일을 버전 관리 style.css?ver=xxx.xxx하고 CloudFront 배포에 "Forward Query strings"가 설정되어 있는지 확인하십시오. 쿼리 문자열에서 숫자를 늘리면 CloudFront에서이 파일을 자동으로 가져 오기만하면됩니다.

  2. AWS 콘솔을 통해 파일을 수동으로 무효화합니다 (배포를 편집 할 때 무효화 탭이 있음)

'Forward Query Strings'를 켜려면 다음을 수행하십시오.

  • 'i'왼쪽의 확인란을 선택하여 Cloudfront 배포를 편집 한 다음 툴바에서 "배포 설정"버튼을 클릭하십시오.
  • 행동 탭으로 이동
  • 라인을 선택하고 '편집'을 클릭하십시오
  • "전달 쿼리 문자열"을 예로 변경
  • "예, 편집"을 클릭하십시오

1
@kaiser yup, 버전으로 날짜 시간은 파일을 버전 관리하는 가장 좋은 방법입니다. 그러나 CloudFront에서 "전달 쿼리 문자열"옵션이 켜져 있는지 확인해야합니다. 그렇지 않으면 정교하게 제작 된 버전 번호가 무시됩니다. : P
anu

감사합니다. 이 절차에 익숙하지 않기 때문에 두 가지 질문이 있습니다. 1)“버전이 지정된”파일의 이름은 사용자가 제시 한 예와 정확히 일치해야합니다 (물음표, 등호 및 모든“x”를 선택한 숫자로 대체). 2) CLoudFront 용 AWS 콘솔에서 블로그 왼쪽에 생성 한 배포 옆의 표 왼쪽에있는 "I"를 클릭합니다. 이를 통해 배포 설정에 액세스 할 수 있습니다. "Forward Query strings"가 "false"인 것을 알 수 있습니다. 이 "행동"을 동일한 값으로 "For. Q. strings"에 대해 "true"로 복제해야합니까
Parneix

1
1. 예 또는 @kaiser의 의미를 잘 사용하지만 불완전한 답변으로 파일 이름을 지정할 수 있습니다. 2. 프로세스에 대한 답변을 업데이트하겠습니다
anu

8

파일 내용이 변경 될 때 캐싱을 방지하기위한 "간단한 속임수"가 있습니다. 파일을 변경 한 최신 날짜 / 시간으로 설정된 버전 번호를 추가하십시오.

add_action( 'wp_enqueue_scripts', 'wpse61738_non_cached_stylesheet' );
function wpse61738_non_cached_stylesheet()
{
    wp_enqueue_style( 
        'style-main',
        get_stylesheet_directory_uri().'/style.css',
        array(),
        filemtime( get_stylesheet_directory().'/style.css' )
    );
}

?ver=0123456789헤더의 style.css 참조 링크에 추가 됩니다. 버전 번호는 파일 내용이 수정 될 때만 변경됩니다. 따라서 a) 서버 측 캐시 b) 브라우저 캐시와 완벽하게 작동하고 자동으로 새로 고치는 솔루션이 있습니다.


좋아, 그것은 정말 흥미로운 옵션입니다. style.css각 수정 후에 파일 을 수동으로 버전 을 지정할 필요가 없습니다 (한 시점에서 잊어 버릴 것입니다). 이제 물어볼 수 있다면이 코드를 어디에 추가해야합니까? 내 functions.php파일을 추측 할까요?
Parneix

이 코드를 어디에 추가해야하는지 모르겠습니다. 테마 파일을 검색하여 style.css 파일에 대한 "일반적인"호출을 바꾸십시오. 간단한 업데이트를 게시 할 것이므로 functions.php 파일에 넣을 수 있습니다 (여전히 원래 호출을 제거해야 함을 의미 함). 그리고 btw : 이것은 @anu 답변에 추가 된 것입니다. (여전히 감사 의견 :)
kaiser

1
문제 없어요! 이 코드의 위치는 사용 된 테마에 따라 변경 될 수 있음을 완벽하게 이해합니다. functions.php파일 에 추가하도록하겠습니다 . 나는 아직도 그것이 @anu가 제공 한 솔루션을 보완하는 것이라고 생각합니다. 도움을 주셔서 감사합니다.
Parneix

-1

짧은 대답 ...

  1. 모든 테마 파일을 삭제하고 다시 업로드하십시오. 때때로 삭제 조치가 CDN을 지 웁니다.

  2. 예, 제거를 시도 할 수 있지만 일반적으로 삭제 및 다시 업로드가 더 빠릅니다.

  3. 또한 W3TC 및 Amazon의 설정을 확인하십시오. W3TC에서 기본 캐시는 일반적으로 365 일입니다. 31536000 초입니다 :)

Amazon ..에는 엔드 포인트가 CDN을 다시 쿼리하기위한 설정이 있습니다. Rackspace에서 기본값은 24 시간입니다.


1
이것보다 훨씬 더 좋은 방법이 있습니다. 제 답변을보십시오
anu

“모든 테마 파일을 삭제하고 다시 업로드하십시오. 때때로 삭제 작업으로 CDN이 지워집니다.”내 웹 사이트에서 CDN을 삭제한다는 의미입니까? 그런 다음 WordPress 설치에서 다시 업로드하십시오. 그런 다음 W3 Total Cache 대시 보드를 통해“테마 파일 업로드”를 다시 수행 한 것 같습니다.
Parneix

1
@Parneix는 진지하게, 당신이하지 않는 한 모든 것을 삭제하지 마십시오. CDN에서 모든 것을 삭제하지 않으면 거의 작동하지 않습니다. 오래된 CSS 파일을 무효화하는 더 좋은 방법이 많이 있습니다
anu

1
예, 감사합니다! 나는 당신의 제안에주의를 기울였습니다. 여기에 오는 모든 도움에 정말 감사드립니다. 내 문제를 해결할뿐만 아니라 새로운 것을 배우고 있습니다.
Parneix
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.