C3 Cloudfront Cache Controller

설명

글을 발행할 때 CloudFront 캐시를 모두 지우는 간단한 플러그인입니다.
워드프레스 전면에서 CloudFront를 쉽게 사용할 수 있습니다.

기능

  • wp_is_mobile()
    CloudFront 헤더를 통해 기기 뷰어 유형을 확인하세요.
    이제 HTTP_CLOUDFRONT_IS_MOBILE_VIEWERHTTP_CLOUDFRONT_IS_TABLET_VIEWER를 지원합니다.

  • 미리보기 URL
    미리보기 페이지에서 플러그인은 CloudFront 캐시를 방지하기 위해 post_date 쿼리를 추가합니다.
    또한 CloudFront 캐시를 방지하기 위해 wordpress_loginuser_last_visit 쿠키를 설정합니다.

사용자가 로그아웃하면 wordpress_loginuser_last_visit 쿠키가 삭제됩니다.

무효화 (캐시 삭제) 페이지 URL

이 플러그인은 다음 페이지 URL을 CloudFront 무효화 API로 전송합니다.

  • 최상위 페이지 URL
  • 게시된 글 페이지 URL
  • 카테고리 아카이브 페이지 URL

AWS IAM 정책 예시

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "cloudfront:GetDistribution",
                "cloudfront:ListInvalidations",
                "cloudfront:GetStreamingDistribution",
                "cloudfront:GetDistributionConfig",
                "cloudfront:GetInvalidation",
                "cloudfront:CreateInvalidation"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}

참고: 상세 무효화 정보를 보려면 cloudfront:GetInvalidation 권한이 필요합니다. 이 권한이 부여되지 않으면 다른 플러그인 기능에 영향을 주지 않고 상세 보기 기능이 정상적으로 비활성화됩니다.

환경 변수를 통해 설정을 추가하기

플러그인은 다음 변수들을 정의하여 구성할 수 있습니다:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • C3_DISTRIBUTION_ID

이러한 변수들을 코드처럼 wp-config.php 파일에 넣을 수 있습니다

php
define( 'AWS_ACCESS_KEY_ID', '' );
define( 'AWS_SECRET_ACCESS_KEY', '' );
define( 'C3_DISTRIBUTION_ID', '' );

쿠키

이 플러그인은 사용자에게 wordpress_loginuser_last_visit라는 쿠키를 설정합니다.
이 쿠키는 사용자가 글이나 콘텐츠를 미리 볼 때 CDN 캐싱을 방지합니다.
알림판에서 로그아웃하면 플러그인은 사용자에게서 이 쿠키를 삭제합니다.

7.1.0

  • [기능] 무효화 경로, 호출자 참조 및 상태를 표시하는 모달 팝업을 통해 무효화 상세 보기 화면 추가
  • [수정] 아카이브 페이지가 없는 글 유형에 대해 잘못된 경로가 반환되는 문제 수정

7.0.1

  • [업데이트] 보안 강화 및 PHP 8.x 호환성 향상을 위해 AWS API 호출 처리 기능 개선

7.0.0

  • [변경 취소] AWS SDK 종속성을 제거하고 사용자 정의 HTTP CloudFront API 클라이언트 구현
  • [업데이트] c3_log_invalidation_list 필터를 사용하여 포괄적인 무효화 로깅 기능 추가
  • [업데이트] 구성 가능한 CloudFront 지역 및 HTTP 타임아웃 설정 추가

6.1.6

  • [수정] null 허용 타입 힌트를 추가하여 PHP 8 구문 오류 수정
  • [수정] Invalidation_Service.php에서 동적 속성 생성과 관련된 사용 중단 경고 수정
  • [수정] Cron_Service.php에서 동적 속성 생성과 관련된 사용 중단 경고 수정
  • [수정] 테스트 파일에서 PHP 7.4 구문 오류 수정

6.1.5

  • [수정] AWS SDK를 설치할 때 aws.phar 대신 composer를 사용하도록 변경

6.1.4

  • [업데이트] post_type_archive_link 지원 추가

6.1.3

  • [수정] v6.0.0부터 필터 c3_invalidation_items가 사라지는 문제 해결

6.1.2

  • [수정] PHP 버전 비교 문제

6.1.1

  • [수정] 플러그인 비활성화 문제

6.1.0

  • [업데이트] post_ids를 기준으로 캐시 제거

6.0.0

  • [중대한 변경 사항] 전체 코드 재작성
  • [업데이트] cron 작업 로그를 표시하기 위해 c3_log_cron_invalidation_task 필터 추가
  • [업데이트] 번들로 제공되는 AWS SDK 경로를 변경하거나 제거할 수 있도록 c3_aws_sdk_path 필터 추가

5.5.1

  • [업데이트] 최상위 메뉴를 설정 하위 메뉴로 교체

5.5.0

  • [업데이트] AWS 자격 증명에 정의된 변수 사용 가능

5.4.2

  • [버그 수정] 미리보기 페이지에서 쿠키 경로 설정

5.4.1

  • [버그 수정] 무효화 쿼리 cron 이벤트에서 정의되지 않은 경로 인덱스 오류 수정

5.4.0

  • [업데이트] 업데이트 미리보기 수정 플러그인

5.3.4

  • [버그 수정] 사소한 버그 수정

5.3.3

  • [SDK 변경] SDK 교체

5.3.2

  • [버그 수정] AMIMOTO 관리형 호스팅으로 사용할 경우 EC2 역할을 사용하도록 수정

5.3.1

  • [필터 추가] 필터를 사용하여 AWS SDK 버전 선택 가능

5.3.0

  • [SDK 업데이트] PHP 5.6 이상 버전을 사용하는 경우 AWS SDK v3 사용

5.2.1

  • [AMIMOTO Managed용] WP-CLI로 실행되도록 버그 수정

5.2.0

  • [필터 추가] 요청 무효화 재시도 기능을 하는 wp-cron 등록을 비활성화할 수 있음.
  • [README] IAM 정책 예시를 보기 위해 README 업데이트

5.1.0

  • [업데이트 미리보기 기능] 사용자가 로그인할 경우 CloudFront 캐시를 사용하지 않도록 쿠키 설정
  • [업데이트 미리보기 기능] 사용자가 로그아웃할 경우 CloudFront 캐시를 방지하기 위해 쿠키 해제

5.0.0

  • wp_is_mobile() 함수에서 CloudFront 뷰어 매개변수 지원. (버전 4.9.0 이상)

4.4.0

  • 사소한 버그 수정
  • AMIMOTO 관리형 호스팅 사용자를 위한 기능 추가

4.3.1

  • cron 실행 간격 수정
  • 'c3_invalidation_interval , c3_invalidation_cron_interval, c3_invalidation_item_limits 필터 추가.
  • 기본 무효화 간격 및 항목 업데이트

4.3.0

  • 여러 글을 동시에 발행하는 경우 cron 이벤트 예약

4.2.1

  • ‘c3_credential’ 필터 위치 수정

4.2.0

  • AMIMOT 대시보드 지원

4.1.0

  • 무효화 로그 표시

4.0.3

  • Travis의 자동 배포

4.0.2

  • WP-CLI 매개변수 검사 추가 (wp c3 flush)
  • transient_key 변경

4.0.1

  • 버그 수정 (Nephila Clavata와의 충돌)

4.0.0

  • AWS SDK 버전 3 지원
  • ‘c3_add_setting_before’ 액션 후크 제거
    대신 ‘c3_after_title’ 필터 후크 사용.
  • ‘c3_add_setting_after’ 액션 후크 제거
    대신 ‘c3_after_auth_form’ 필터 후크 사용.

3.0.0

  • CF Preview Fix 플러그인 포함
  • 이름 변경

2.4.3

  • 예외 처리 버그 수정

2.4.2

  • CLI 버그 수정

2.4.1

  • CLI 버그 수정

2.4.0

  • WP-CLI 명령어 추가 (설정 업데이트)

2.3.0

  • WP-CLI 명령어 추가

2.2.2

  • 강제 무효화

2.2.1

  • 오타 수정

2.2.0

  • EC2 인스턴스 역할을 사용하기 위한 필터 추가
  • t.w.org에서 번역 가능

2.1.1

  • URL 무효화 오류가 너무 많이 발생하는 문제 해결

2.1.0

  • 무효화 URL을 사용자 정의할 수 있는 후크 추가
  • 새로운 무효화 url, 용어 지원
  • 수동 무효화 버튼이 추가됨

2.0.2

  • AWS SDK 변경
  • wokamoto의 코드 리팩토링
  • 무효화된 URL

2.0.1

  • AWS SDK 변경
  • wokamoto의 코드 리팩토링
  • 무효화된 URL

1.0

  • 최초 출시.

6.1.0

  • [수정] 플러그인 비활성화 문제

설치

  1. 워드프레스의 ‘플러그인’ 메뉴에서 플러그인 활성화
  2. AWS CloudFront에 유효한 IAM 정책을 연결하기 위한 IAM 사용자 생성
  3. wp-admin에서 플러그인 설정 구성

FAQ

언제 무효화 요청을 보내나요?

글이 발행되면 이 플러그인은 CloudFront에 글 무효화 요청을 보냅니다.

사용자 정의 구현

이 플러그인은 이제 공식 AWS SDK 대신 사용자 정의 AWS CloudFront 구현을 사용하여 종속성을 줄이고 성능을 향상시킵니다.

후기

2022년 1월 15일
Do not be fooled by small number of reviews. This plugin works super well and even works with the instance profile (no need to supply access/secret keys). It is simple and does the job as advertised, excellent work! Thanks from saving me a ton of time to write my own plugin like that.
2018년 7월 30일
Works well and very easy to get going. Occasionally disabled itself when used with other plugins e.g. backupbuddy. Would be nice to store AWS credentials in wp-config.php too. Otherwise excellent. Thank you.
2017년 9월 8일
Tried a couple of others until I found this amazing simple plugin ! But After I enter the credentials there should be some screen… I see a blank page :/ But It works!!!
모든 3 평가 읽기

기여자 & 개발자

“C3 Cloudfront Cache Controller”(은)는 오픈 소스 소프트웨어입니다. 다음의 사람들이 이 플러그인에 기여하였습니다.

기여자

“C3 Cloudfront Cache Controller”(이)가 2 개 언어로 번역되었습니다. 기여해 주셔서 번역자님께 감사드립니다.

자국어로 “C3 Cloudfront Cache Controller”(을)를 번역하세요.

개발에 관심이 있으십니까?

코드 탐색하기는, SVN 저장소를 확인하시거나, 개발 기록RSS로 구독하세요.

변경이력

7.2.0

  • [Feature] Add 3 new path adjustment hooks for more granular invalidation control:
    • c3_invalidation_post_batch_home_path – 단일 글 무효화에 대한 홈 경로 사용자 정의
    • c3_invalidation_posts_batch_home_path – 여러 글 무효화에 대한 홈 경로 사용자 정의
    • c3_invalidation_manual_batch_all_path – 수동 “모두 지우기” 작업에 대한 사용자 정의 경로
  • [개선] apply_filters 메서드에서 가변 인수를 지원하도록 Hooks.php 업데이트
  • [호환성] 기존 c3_invalidation_items 필터와의 완벽한 하위 호환성 유지