Skip to content

Commit

Permalink
Merge pull request #17 from amimoto-ami/feature/invalidation-interval
Browse files Browse the repository at this point in the history
Feature/invalidation interval
  • Loading branch information
hideokamoto authored Oct 2, 2017
2 parents 3f4fb66 + 541c343 commit 228265b
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 6 deletions.
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ notifications:
php:
- 5.5
- 5.6
- hhvm
- 7.0

matrix:
include:
Expand Down
36 changes: 36 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,39 @@ $ git clone [email protected]:amimoto-ami/c3-cloudfront-clear-cache.git
$ cd c3-cloudfront-clear-cache
$ composer install
```


## Filters

### Change Invalidation interval

Default interval is 1 minutes.

```
add_filter('c3_invalidation_interval', function( $interval_minutes ) {
$custom_interval = 1;
return $custom_interval;
} );
```

### Change Invalidation retry interval

Default interval is 1 minutes.

```
add_filter('c3_invalidation_cron_interval', function( $interval_minutes ) {
$custom_interval = 1;
return $custom_interval;
} );
```

### Change Invalidation items limit

Default limit is 100.

```
add_filter( 'c3_invalidation_item_limits', function( $limits ) {
$custom_limit = 300;
return $custom_limit;
} );
```
10 changes: 5 additions & 5 deletions module/model/invalidation.php
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,10 @@ private function _register_cron_event( $query ) {
if ( $query['Paths']['Items'][0] === '/*') {
return;
}
$interval_minutes = apply_filters( 'c3_invalidation_cron_interval', 1 );
$query = $this->_merge_transient_invalidation_query( $query );
set_transient( self::C3_CRON_INDALITATION_TARGET , $query , 5 * 60 );
$time = time() + MINUTE_IN_SECONDS * 5;
set_transient( self::C3_CRON_INDALITATION_TARGET , $query , $interval_minutes * MINUTE_IN_SECONDS * 1.5 );
$time = time() + MINUTE_IN_SECONDS * $interval_minutes;
wp_schedule_single_event( $time, 'c3_cron_invalidation');
}

Expand All @@ -62,7 +63,6 @@ private function _register_cron_event( $query ) {
*
* @since 4.3.0
* @access public
* @param array $query
**/
public function cron_invalidation() {
error_log('cron works');
Expand Down Expand Up @@ -92,7 +92,7 @@ private function _merge_transient_invalidation_query( $query ) {
$query['Paths']['Items'] = array_merge( $query_items, $current_items );
$query['Paths']['Items'] = array_merge( array_unique( $query['Paths']['Items'] ) );
$item_count = count( $query['Paths']['Items'] );
if ( 10 < $item_count ) {
if ( apply_filters( 'c3_invalidation_item_limits', 100) < $item_count ) {
$query['Paths'] = array(
'Quantity' => 1,
'Items' => array( '/* ' ),
Expand Down Expand Up @@ -165,7 +165,7 @@ private function _create_cf_client() {
**/
private function _do_invalidation( $cf_client, $query ) {
try {
set_transient( self::C3_INVALIDATION_KEY , true , 5 * 60 );
set_transient( self::C3_INVALIDATION_KEY , true , apply_filters( 'c3_invalidation_interval', 1 ) * 60 );
$result = $cf_client->createInvalidation( $query );
return true;
} catch ( Aws\CloudFront\Exception\TooManyInvalidationsInProgressException $e ) {
Expand Down

0 comments on commit 228265b

Please sign in to comment.