C3 Cloudfront Cache Controller

説明

This is simple plugin that clear all cloudfront cache if you publish posts.
You can easy use CloudFront in front of WordPress.

Fixtures

  • wp_is_mobile()
    Check device viewer type by CloudFront header.
    Now supports HTTP_CLOUDFRONT_IS_MOBILE_VIEWER and HTTP_CLOUDFRONT_IS_TABLET_VIEWER.

  • preview url
    In preview page, plugin add post_date query to avoid CloudFront cache.
    And set wordpress_loginuser_last_visit cookie for avoid CloudFront cache too.

The wordpress_loginuser_last_visit cookie will be removed if user sign out.

無効化(キャッシュクリア)するページのURL

This plugin send following page url to CloudFront Invalidation API.

  • トップページの URL
  • Published Post Page URL
  • Category Archive Page URL

AWS IAM Policy Example

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

Note: The cloudfront:GetInvalidation permission is required for viewing detailed invalidation information. If this permission is not granted, the detail view feature will be disabled gracefully without affecting other plugin functionality.

Adding your configuration through env vars

The plugin can be configured by defining the following variables:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • C3_DISTRIBUTION_ID

You can put these variables like the code into the wp-config.php

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

Cookie

This plugin set a Cookie named wordpress_loginuser_last_visit to the user.
It prevents CDN caching when the user is previewing his posts or contents.
Once logging out from Dashboard, plugin removes this cookie from user.

7.1.0

  • [Feature] Add invalidation detail view with modal popup showing invalidation paths, caller reference, and status
  • [Fix] Fix invalid path returned for post type without archive page

7.0.1

  • [Update] Improved AWS API call processing for better security and PHP 8.x compatibility

7.0.0

  • [Breaking Change] Remove AWS SDK dependency and implement custom HTTP CloudFront API client
  • [Update] Add comprehensive invalidation logging with c3_log_invalidation_list filter
  • [Update] Add configurable CloudFront region and HTTP timeout settings

6.1.6

  • [Fix] Fixed PHP 8 syntax errors by adding nullable type hints
  • [Fix] Fixed deprecation warnings about creation of dynamic properties in Invalidation_Service.php
  • [Fix] Fixed deprecation warnings about creation of dynamic properties in Cron_Service.php
  • [Fix] Fixed PHP 7.4 syntax errors in test files

6.1.5

  • [Fix] Changed to install the AWS SDK using composer instead of aws.phar.

6.1.4

  • [Update] Support post_type_archive_link

6.1.3

  • [Fix] Lost filter c3_invalidation_items From v6.0.0

6.1.2

  • [Fix] php version compare issue

6.1.1

  • [Fix] Plugin deactivation issue

6.1.0

  • [Update] Flush cache by post_ids

6.0.0

  • [Breaking Change] Re-write entire code
  • [Update] Add c3_log_cron_invalidation_task filter to show cron job Logs
  • [Update] Add c3_aws_sdk_path filter to change or remove bundled AWS SDK path

5.5.1

  • [Update] Replace the top level menu with a Settings submenu

5.5.0

  • [Update] Can use defined variables for AWS Credentials

5.4.2

  • [Bug fix] Set cookie path in preview page

5.4.1

  • [Bug fix] Undefined Paths index in invalidation query cron event

5.4.0

  • [Update] Update preview fix plugin

5.3.4

  • [Bug fix] Small bug fix

5.3.3

  • [Change SDK] replace sdk

5.3.2

  • [Bug fix] Use EC2 role if using as AMIMOTO Managed hosting

5.3.1

  • [Add filter] Can select AWS SDK version by filter

5.3.0

  • [Update SDK] Use AWS SDK v3 when you using php 5.6 or later

5.2.1

  • [For AMIMOTO Managed] bug fix to run by WP-CLI

5.2.0

  • [Add filter] We can disable to register wp-cron that retry request invalidation.
  • [Readme] Update readme to see IAM Policy example.

5.1.0

  • [Update preview fixture] Set cookie to avoid CloudFront cache if user sign in
  • [Update preview fixture] Unset cookie for avoide CloudFront cache if user sign out

5.0.0

  • Support CloudFront viewer params on wp_is_mobile().(4.9.0 or later)

4.4.0

  • Fix small bug
  • Add some feature for AMIMOTO Managed hosting user

4.3.1

  • Fix cron interval
  • add filters 'c3_invalidation_interval, c3_invalidation_cron_interval, c3_invalidation_item_limits.
  • update default invalidation interval & items.

4.3.0

  • Schedule cron event if you published many post at the same time

4.2.1

  • Fix ‘c3_credential’ filter position

4.2.0

  • Support AMIMOT Dashboard

4.1.0

  • Show Invalidation Logs

4.0.3

  • Auto Deploy by Travis

4.0.2

  • Add WP-CLI param check ( wp c3 flush)
  • change transient_key

4.0.1

  • Bug fix ( conflict Nephila Clavata )

4.0.0

  • Support AWS SDK Version3
  • Remove action hook -> ‘c3_add_setting_before’
    use ‘c3_after_title’ filter hook instead.
  • Remove action hook -> ‘c3_add_setting_after’
    use ‘c3_after_auth_form’ filter hook instead.

3.0.0

  • Include CF Preview Fix plugin
  • Rename

2.4.3

  • Fix Catch Exception BUG

2.4.2

  • CLI のバグを修正

2.4.1

  • CLI のバグを修正

2.4.0

  • WP-CLI コマンドを追加 (設定の更新)

2.3.0

  • WP-CLI コマンドを追加

2.2.2

  • Force Invalidation

2.2.1

  • Fix Typo

2.2.0

  • Add Filter for using EC2 Instance Role.
  • Translationable in t.w.org

2.1.1

  • Fix too many invalidation url error.

2.1.0

  • 無効化する URL をカスタマイズするためのフックを追加
  • support new invalidation url, terms.
  • Manualy invalidation button added

2.0.2

  • Change AWS SDK
  • コードリファクタリング by wokamoto
  • Invalidation URL

2.0.1

  • Change AWS SDK
  • コードリファクタリング by wokamoto
  • Invalidation URL

1.0

  • 初回リリース

6.1.0

  • [Fix] Plugin deactivation issue

インストール

  1. WordPress の「プラグイン」メニューからプラグインを有効化してください
  2. Create IAM user to attach valid IAM Policy for AWS CloudFront
  3. Configure the plugin settings from wp-admin

FAQ

When it send invalidation request?

If post published,this plugin post invalidation request to CloudFront.

Custom Implementation

This plugin now uses a custom AWS CloudFront implementation instead of the official AWS SDK to reduce dependencies and improve performance.

評価

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 – Customize home path for single post invalidation
    • c3_invalidation_posts_batch_home_path – Customize home path for multiple posts invalidation
    • c3_invalidation_manual_batch_all_path – Customize path for manual “clear all” operations
  • [Enhancement] Update Hooks.php to support variable arguments in apply_filters method
  • [Compatibility] Maintain full backward compatibility with existing c3_invalidation_items filter