_processed ) { return; } $this->_processed = true; // Disable several plugins which do not honor `DONOTCACHEPAGE` (set in `PageResource.php`). if ( ! headers_sent() ) { // Sending `no-cache` header should prevent CDNs from caching the first request. header( 'Cache-Control: no-store, no-cache' ); // Disable SiteGround Optimizer Dynamic Cache. header( 'X-Cache-Enabled: False' ); } // Disable LiteSpeed Cache. $reason = esc_html__( 'Generating CSS', 'et_builder' ); do_action( 'litespeed_control_set_nocache', $reason ); // Disable WP Fastest Cache. if ( class_exists( 'WpFastestCacheCreateCache' ) ) { // This Plugin has no hook/API to disable cache programmatically.... // The only way we can do this is by setting the `exclude_current_page_text` public property // to a non empty value... except the class instance is not made available anywhere in the code.... // However, the instance also adds itself to the `wp` hook so we can find it by scanning the list // of all registered actions. $hooks = et_()->array_get( $GLOBALS, 'wp_filter.wp.10', [] ); if ( is_array( $hooks ) ) { foreach ( $hooks as $key => $hook ) { if ( isset( $hook['function'] ) && is_array( $hook['function'] ) && is_a( $hook['function'][0], 'WpFastestCacheCreateCache' ) ) { $wp_fastest_cache = $hook['function'][0]; $wp_fastest_cache->exclude_current_page_text = ""; break; } } } } // Disable Breeze Cache. if ( function_exists( 'breeze_cache' ) ) { // This Plugin has no hook/API to disable cache programmatically.... // The only way we can do this is by overwriting its configuration // which is exposed as global variable. global $breeze_config; if ( isset( $breeze_config['cache_options'] ) ) { $cache_options =& $breeze_config['cache_options']; if ( is_array( $cache_options ) ) { $cache_options['breeze-browser-cache'] = 0; $cache_options['breeze-desktop-cache'] = 0; $cache_options['breeze-mobile-cache'] = 0; } } } // Disable Hyper Cache. if ( function_exists( 'hyper_cache_callback' ) ) { global $hyper_cache_stop; $hyper_cache_stop = true; } } /** * Disable Cache on first page request. * * @see prevent_cache() * * @since 4.11.0 * * @return void */ public function maybe_prevent_cache() { global $shortname; // Bail if the magic already happened. if ( $this->_processed ) { return; } // Disable in the Visual Builder if ( et_fb_is_enabled() ) { return; } $product = in_array( $shortname, [ 'divi', 'extra' ], true ) ? $shortname : 'divi-builder'; $post_id = et_core_page_resource_get_the_ID(); $is_preview = is_preview() || is_et_pb_preview() || isset( $_GET['et_pb_preview_nonce'] ) || is_customize_preview(); // phpcs:disable WordPress.Security.NonceVerification.NoNonceVerification -- Only checks if the parameter exists, and is therefore not susceptible to CSRF. $is_singular = et_core_page_resource_is_singular(); $is_cpt = et_builder_should_wrap_styles(); $forced_in_footer = $post_id && et_builder_setting_is_on( 'et_pb_css_in_footer', $post_id ); $forced_inline = ( ! $post_id || $is_preview || $forced_in_footer || et_builder_setting_is_off( 'et_pb_static_css_file', $post_id ) || et_core_is_safe_mode_active() || ET_GB_Block_Layout::is_layout_block_preview() ); // If the post is password protected and a password has not been provided yet, // no content (including any custom style) will be printed. // When static css file option is enabled this will result in missing styles. if ( ! $forced_inline && post_password_required( $post_id ? $post_id : null ) ) { $forced_inline = true; } // Bail if using inline styles, page content won't be changing between requests anyway. if ( $forced_inline ) { return; } $unified = $is_singular && ! $forced_inline && ! $forced_in_footer && et_core_is_builder_used_on_current_request(); $post_id = $unified ? $post_id : 'global'; $owner = $unified ? 'core' : $product; $slug = $unified ? 'unified' : 'customizer'; $slug .= $is_cpt ? '-cpt' : ''; $slug = et_theme_builder_decorate_page_resource_slug( $post_id, $slug ); $resource = et_core_page_resource_get( $owner, $slug, $post_id ); // Bail if Builder CSS already exists in external file, this is the request we want to cache. if ( $resource->has_file() ) { return; } $this->prevent_cache(); } /** * Get the class instance. * * @since 4.11.0 * * @return ET_Builder_Do_Not_Cache_Page */ public static function instance() { if ( ! self::$_instance ) { self::$_instance = new self(); } return self::$_instance; } } ET_Builder_Do_Not_Cache_Page::instance(); blog | Legal Consultation

Beginner Guide to Online Casino Payments: Top Features Explained

Beginner Guide to Online Casino Payments: Top Features Explained How UK Casino Payments Actually Work Every deposit and withdrawal at a licensed UK casino runs through a payment service provider, and the way that provider handles your money determines almost...

Poker Versus Casino Games: A UK Beginner’s Guide

Poker Versus Casino Games: A UK Beginner’s Guide Two Very Different Ways to Play Walk into any UK casino floor and you’ll see the split clearly. On one side sit the table games and slots, running on fixed mathematical edges. On the other sits poker, where...

Best Slot Game Providers UK Ranked: Practical Advice

Best Slot Game Providers UK Ranked: Practical Advice Why Provider Choice Matters More Than You Think Walk into any UK-licensed online casino and you will meet the same handful of software studios again and again. That is not laziness on the operator’s part. It...

Beginner Tips for Video Poker: A Practical Guide for UK Players

Beginner Tips for Video Poker: A Practical Guide for UK Players Video poker occupies an unusual space in the UK casino world. It is a game of skill dressed in the clothing of a slot machine, and that combination confuses plenty of newcomers. Play it like a fruit...
\n\n\n