laipower/wp-content/plugins/w3-total-cache/CacheFlush.php

205 lines
4.1 KiB
PHP

<?php
namespace W3TC;
/**
* W3 Cache flushing
*/
class CacheFlush {
private $_config;
private $_executor;
/**
* PHP5 Constructor
*/
function __construct() {
$this->_config = Dispatcher::config();
$sns = $this->_config->get_boolean( 'cluster.messagebus.enabled' );
if ( $sns )
$this->_executor = new Enterprise_CacheFlush_MakeSnsEvent();
else
$this->_executor = new CacheFlush_Locally();
if ( function_exists( 'add_action' ) ) {
add_action( 'w3tc_redirect', array(
$this,
'execute_delayed_operations'
), 100000, 0 );
add_filter( 'wp_redirect', array(
$this,
'execute_delayed_operations_filter'
), 100000, 1 );
add_action( 'w3tc_messagebus_message_processed', array(
$this,
'execute_delayed_operations'
), 0 );
add_action( 'shutdown', array(
$this,
'execute_delayed_operations'
), 100000, 0 );
}
}
/**
* Flushes database cache
*/
function dbcache_flush() {
if ( $this->_config->get_boolean( 'dbcache.enabled' ) ) {
$this->_executor->dbcache_flush();
}
}
/**
* Flushes minify cache
*/
function minifycache_flush() {
if ( $this->_config->get_boolean( 'minify.enabled' ) ) {
$this->_executor->minifycache_flush();
}
}
/**
* Flushes object cache
*/
function objectcache_flush() {
if ( $this->_config->getf_boolean( 'objectcache.enabled' ) ) {
$this->_executor->objectcache_flush();
}
}
/**
* Flushes fragment cache
*/
function fragmentcache_flush() {
$this->_executor->fragmentcache_flush();
}
/**
* Flushes fragment cache based on group
*/
function fragmentcache_flush_group( $group ) {
$this->_executor->fragmentcache_flush_group( $group );
}
/**
* Updates Browser Query String
*/
function browsercache_flush() {
if ( $this->_config->get_boolean( 'browsercache.enabled' ) ) {
$this->_executor->browsercache_flush();
}
}
/**
* Purge CDN mirror cache.
*
* @param array $extras Extra configuration.
*/
public function cdn_purge_all( $extras = array() ) {
if ( $this->_config->get_boolean( 'cdn.enabled' ) || $this->_config->get_boolean( 'cdnfsd.enabled' ) ) {
return $this->_executor->cdn_purge_all( $extras );
}
return false;
}
/**
* Purges CDN files
*/
function cdn_purge_files( $purgefiles ) {
$this->_executor->cdn_purge_files( $purgefiles );
}
/**
* Clears the system APC
*
* @return mixed
*/
function opcache_flush() {
return $this->_executor->opcache_flush();
}
/**
* Purges/Flushes post page
*/
function flush_post( $post_id, $extras = null ) {
return $this->_executor->flush_post( $post_id, $extras );
}
/**
* Checks if page contents can be flushed (i.e. cached at all)
*/
function flushable_posts( $extras = null ) {
$flushable_posts = apply_filters( 'w3tc_flushable_posts', false,
$extras );
return $flushable_posts;
}
/**
* Purges/Flushes all posts
*/
function flush_posts( $extras = null ) {
return $this->_executor->flush_posts( $extras );
}
/**
* Purges/Flushes all enabled caches
*/
function flush_all( $extras = null ) {
static $flushed = false;
if ( !$flushed ) {
$flushed = true;
$this->_executor->flush_all( $extras );
}
}
/**
* Purges/Flushes cache group
*/
function flush_group( $group, $extras = null ) {
static $flushed_groups = array();
if ( !isset( $flushed_groups[$group] ) ) {
$flushed_groups[$group] = '*';
$this->_executor->flush_group( $group, $extras );
}
}
/**
* Purges/Flushes url
*/
function flush_url( $url, $extras = null ) {
static $flushed_urls = array();
if ( !in_array( $url, $flushed_urls ) ) {
$flushed_urls[] = $url;
return $this->_executor->flush_url( $url, $extras );
}
return true;
}
/**
* Makes get request to url specific to post, ie permalinks
*
* @param unknown $post_id
* @return boolean
*/
function prime_post( $post_id ) {
return $this->_executor->prime_post( $post_id );
}
function execute_delayed_operations() {
return $this->_executor->execute_delayed_operations();
}
function execute_delayed_operations_filter( $v ) {
$this->execute_delayed_operations();
return $v;
}
}