Flamingo plugin and home page cache
-
I have noticed a very strange behavior on my site. When I submit a form (Contact Form 7) on any subpage, then the home page cache is cleared (only home page). After many hours of research, I came to the fact that this phenomenon occurs only when the Flamingo plugin is enabled. When I turn it off the problem disappears.
Another strange thing… the problem also disappears when Flamingo plugin is enabled and I turn on debugging:
Toolbox -> Debug Settings -> Debug Log -> OnI don’t have any checkboxes checked here:
Cache -> Purge -> Auto Purge Rules For Publish/UpdateThis field is empty:
Cache -> Purge -> Purge All HooksPHP: 8.0.9
LiteSpeed plugin: 5.3.1
LiteSpeed server: 6.0.8
WP: 5.9.2 (multisite)
-
I withdraw this sentence:
Another strange thing… the problem also disappears when Flamingo plugin is enabled and I turn on debugging:
Toolbox -> Debug Settings -> Debug Log -> OnHere is debug.log:
01/22/23 00:38:18.410 [178.xxx.x.xxx:12416 1 tyM] ??</img> ------POST HTTP/1.1 (HTTPS) /wp-json/contact-form-7/v1/contact-forms/90072/feedback 01/22/23 00:38:18.410 [178.xxx.x.xxx:12416 1 tyM] Query String: 01/22/23 00:38:18.410 [178.xxx.x.xxx:12416 1 tyM] HTTP_REFERER: https://mydomain.com/cache-form-test/ 01/22/23 00:38:18.410 [178.xxx.x.xxx:12416 1 tyM] User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36 01/22/23 00:38:18.410 [178.xxx.x.xxx:12416 1 tyM] Accept: application/json, */*;q=0.1 01/22/23 00:38:18.410 [178.xxx.x.xxx:12416 1 tyM] Accept Encoding: gzip 01/22/23 00:38:18.410 [178.xxx.x.xxx:12416 1 tyM] X-LSCACHE: true 01/22/23 00:38:18.657 [178.xxx.x.xxx:12416 1 tyM] [Router] get_role: 01/22/23 00:38:18.657 [178.xxx.x.xxx:12416 1 tyM] [Media] init 01/22/23 00:38:18.658 [178.xxx.x.xxx:12416 1 tyM] [LQIP] init 01/22/23 00:38:18.658 [178.xxx.x.xxx:12416 1 tyM] [Optm] init 01/22/23 00:38:18.658 [178.xxx.x.xxx:12416 1 tyM] [Optm] ?</img> CCSS set to OFF due to missing domain key 01/22/23 00:38:18.659 [178.xxx.x.xxx:12416 1 tyM] [CDN] init 01/22/23 00:38:18.659 [178.xxx.x.xxx:12416 1 tyM] ?</img> Task init 01/22/23 00:38:18.659 [178.xxx.x.xxx:12416 1 tyM] [Router] LSCWP_CTRL bypassed empty 01/22/23 00:38:18.660 [178.xxx.x.xxx:12416 1 tyM] [GUI] init 01/22/23 00:38:18.986 [178.xxx.x.xxx:12416 1 tyM] [REST] ?</img> Internal REST ON [filter] rest_request_before_callbacks 01/22/23 00:38:18.986 [178.xxx.x.xxx:12416 1 tyM] [REST] ?</img> Internal REST OFF [filter] rest_request_after_callbacks 01/22/23 00:38:18.987 [178.xxx.x.xxx:12416 1 tyM] [REST] ?</img> Internal REST ON [filter] rest_request_before_callbacks 01/22/23 00:38:18.987 [178.xxx.x.xxx:12416 1 tyM] [REST] ?</img> Internal REST OFF [filter] rest_request_after_callbacks 01/22/23 00:38:18.988 [178.xxx.x.xxx:12416 1 tyM] [REST] ?</img> Internal REST ON [filter] rest_request_before_callbacks 01/22/23 00:38:18.988 [178.xxx.x.xxx:12416 1 tyM] [REST] ?</img> Internal REST OFF [filter] rest_request_after_callbacks 01/22/23 00:38:18.988 [178.xxx.x.xxx:12416 1 tyM] [REST] ?</img> Internal REST ON [filter] rest_request_before_callbacks 01/22/23 00:38:18.988 [178.xxx.x.xxx:12416 1 tyM] [REST] ?</img> Internal REST OFF [filter] rest_request_after_callbacks 01/22/23 00:38:18.992 [178.xxx.x.xxx:12416 1 tyM] [Vary] Rest API init disabled vary change 01/22/23 00:38:19.061 [178.xxx.x.xxx:12416 1 tyM] [REST] ?</img> Internal REST ON [filter] rest_request_before_callbacks 01/22/23 00:38:20.163 [178.xxx.x.xxx:12416 1 tyM] ??</img> added * => LiteSpeed\Root::debug(??</img> added *,8)@46 => LiteSpeed\Purge->_add(ARRAY)@480 => LiteSpeed\Purge::add(ARRAY)@452 => LiteSpeed\Purge->purge_post(90098)@849 => LiteSpeed\Purge->purge_publish(publish,new)@83 => WP_Hook->apply_filters(ARRAY)@307 => WP_Hook->do_action(ARRAY)@331 => /home//mydomain.com/public_html/wp-includes/post.php@474 => /home//mydomain.com/public_html/wp-includes/post.php@5317 01/22/23 00:38:20.163 [178.xxx.x.xxx:12416 1 tyM] ??</img> X-LiteSpeed-Purge: public,8051_ 01/22/23 00:38:20.258 [178.xxx.x.xxx:12416 1 tyM] [REST] ?</img> Internal REST OFF [filter] rest_request_after_callbacks 01/22/23 00:38:20.260 [178.xxx.x.xxx:12416 1 tyM] ??</img> [Tag] Add --- HTTP.200 01/22/23 00:38:20.260 [178.xxx.x.xxx:12416 1 tyM] [Core] CHK html bypass: miss footer const 01/22/23 00:38:20.261 [178.xxx.x.xxx:12416 1 tyM] [Ctrl] not cacheable before ctrl finalize 01/22/23 00:38:20.261 [178.xxx.x.xxx:12416 1 tyM] [Router] get_role: 01/22/23 00:38:20.261 [178.xxx.x.xxx:12416 1 tyM] [Vary] role id: failed, guest 01/22/23 00:38:20.261 [178.xxx.x.xxx:12416 1 tyM] [Router] get_role: 01/22/23 00:38:20.261 [178.xxx.x.xxx:12416 1 tyM] [Router] get_role: 01/22/23 00:38:20.261 [178.xxx.x.xxx:12416 1 tyM] [Vary] no custimzed vary 01/22/23 00:38:20.262 [178.xxx.x.xxx:12416 1 tyM] [Core] Silence Comment due to REST/AJAX 01/22/23 00:38:20.262 [178.xxx.x.xxx:12416 1 tyM] ??</img> X-LiteSpeed-Cache-Control: no-cache 01/22/23 00:38:20.262 [178.xxx.x.xxx:12416 1 tyM] ??</img> X-LiteSpeed-Purge: public,8051_ 01/22/23 00:38:20.262 [178.xxx.x.xxx:12416 1 tyM] [Core] CHK html bypass: miss footer const 01/22/23 00:38:20.263 [178.xxx.x.xxx:12416 1 tyM] [Media] bypass: Not frontend HTML type 01/22/23 00:38:20.263 [178.xxx.x.xxx:12416 1 tyM] GUI bypassed by no counter 01/22/23 00:38:20.263 [178.xxx.x.xxx:12416 1 tyM] [Optm] bypass: Not frontend HTML type 01/22/23 00:38:20.263 [178.xxx.x.xxx:12416 1 tyM] Response headers --- array ( 0 => 'Content-Type: application/json; charset=UTF-8', 1 => 'X-Robots-Tag: noindex', 2 => 'Link: <https://mydomain.com/wp-json/>; rel="https://api.w.org/"', 3 => 'X-Content-Type-Options: nosniff', 4 => 'Access-Control-Expose-Headers: X-WP-Total, X-WP-TotalPages, Link', 5 => 'Access-Control-Allow-Headers: Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 6 => 'Allow: POST', 7 => 'X-LiteSpeed-Tag: 8051_HTTP.200', 8 => 'Access-Control-Allow-Origin: https://mydomain.com', 9 => 'Access-Control-Allow-Methods: OPTIONS, GET, POST, PUT, PATCH, DELETE', 10 => 'Access-Control-Allow-Credentials: true', 11 => 'Vary: Origin', 12 => 'X-LiteSpeed-Cache-Control: no-cache', 13 => 'X-LiteSpeed-Purge: public,8051_', ) 01/22/23 00:38:20.263 [178.xxx.x.xxx:12416 1 tyM] End response -------------------------------------------------------------------------------- 01/22/23 00:38:20.348 [178.xxx.x.xxx:12416 1 362] ??</img> ------GET HTTP/1.1 (HTTPS) /wp-json/contact-form-7/v1/contact-forms/90072/refill 01/22/23 00:38:20.348 [178.xxx.x.xxx:12416 1 362] Query String: 01/22/23 00:38:20.348 [178.xxx.x.xxx:12416 1 362] HTTP_REFERER: https://mydomain.com/cache-form-test/ 01/22/23 00:38:20.348 [178.xxx.x.xxx:12416 1 362] User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36 01/22/23 00:38:20.348 [178.xxx.x.xxx:12416 1 362] Accept: application/json, */*;q=0.1 01/22/23 00:38:20.348 [178.xxx.x.xxx:12416 1 362] Accept Encoding: gzip 01/22/23 00:38:20.348 [178.xxx.x.xxx:12416 1 362] X-LSCACHE: true 01/22/23 00:38:20.620 [178.xxx.x.xxx:12416 1 362] [Router] get_role: 01/22/23 00:38:20.621 [178.xxx.x.xxx:12416 1 362] [Media] init 01/22/23 00:38:20.621 [178.xxx.x.xxx:12416 1 362] [LQIP] init 01/22/23 00:38:20.622 [178.xxx.x.xxx:12416 1 362] [Optm] init 01/22/23 00:38:20.622 [178.xxx.x.xxx:12416 1 362] [Optm] ?</img> CCSS set to OFF due to missing domain key 01/22/23 00:38:20.622 [178.xxx.x.xxx:12416 1 362] [CDN] init 01/22/23 00:38:20.623 [178.xxx.x.xxx:12416 1 362] ?</img> Task init 01/22/23 00:38:20.623 [178.xxx.x.xxx:12416 1 362] [Router] LSCWP_CTRL bypassed empty 01/22/23 00:38:20.623 [178.xxx.x.xxx:12416 1 362] [GUI] init 01/22/23 00:38:20.876 [178.xxx.x.xxx:12416 1 362] [REST] ?</img> Internal REST ON [filter] rest_request_before_callbacks 01/22/23 00:38:20.876 [178.xxx.x.xxx:12416 1 362] [REST] ?</img> Internal REST OFF [filter] rest_request_after_callbacks 01/22/23 00:38:20.876 [178.xxx.x.xxx:12416 1 362] [REST] ?</img> Internal REST ON [filter] rest_request_before_callbacks 01/22/23 00:38:20.876 [178.xxx.x.xxx:12416 1 362] [REST] ?</img> Internal REST OFF [filter] rest_request_after_callbacks 01/22/23 00:38:20.877 [178.xxx.x.xxx:12416 1 362] [REST] ?</img> Internal REST ON [filter] rest_request_before_callbacks 01/22/23 00:38:20.877 [178.xxx.x.xxx:12416 1 362] [REST] ?</img> Internal REST OFF [filter] rest_request_after_callbacks 01/22/23 00:38:20.877 [178.xxx.x.xxx:12416 1 362] [REST] ?</img> Internal REST ON [filter] rest_request_before_callbacks 01/22/23 00:38:20.878 [178.xxx.x.xxx:12416 1 362] [REST] ?</img> Internal REST OFF [filter] rest_request_after_callbacks 01/22/23 00:38:20.881 [178.xxx.x.xxx:12416 1 362] [Vary] Rest API init disabled vary change 01/22/23 00:38:20.964 [178.xxx.x.xxx:12416 1 362] [REST] ?</img> Internal REST ON [filter] rest_request_before_callbacks 01/22/23 00:38:20.981 [178.xxx.x.xxx:12416 1 362] [REST] ?</img> Internal REST OFF [filter] rest_request_after_callbacks 01/22/23 00:38:20.983 [178.xxx.x.xxx:12416 1 362] ??</img> [Tag] Add --- HTTP.200 01/22/23 00:38:20.983 [178.xxx.x.xxx:12416 1 362] [Core] CHK html bypass: miss footer const 01/22/23 00:38:20.984 [178.xxx.x.xxx:12416 1 362] [Ctrl] not cacheable before ctrl finalize 01/22/23 00:38:20.984 [178.xxx.x.xxx:12416 1 362] [Router] get_role: 01/22/23 00:38:20.984 [178.xxx.x.xxx:12416 1 362] [Vary] role id: failed, guest 01/22/23 00:38:20.984 [178.xxx.x.xxx:12416 1 362] [Router] get_role: 01/22/23 00:38:20.984 [178.xxx.x.xxx:12416 1 362] [Router] get_role: 01/22/23 00:38:20.984 [178.xxx.x.xxx:12416 1 362] [Vary] no custimzed vary 01/22/23 00:38:20.984 [178.xxx.x.xxx:12416 1 362] [Core] Silence Comment due to REST/AJAX 01/22/23 00:38:20.984 [178.xxx.x.xxx:12416 1 362] ??</img> X-LiteSpeed-Cache-Control: no-cache 01/22/23 00:38:20.985 [178.xxx.x.xxx:12416 1 362] [Core] CHK html bypass: miss footer const 01/22/23 00:38:20.985 [178.xxx.x.xxx:12416 1 362] [Media] bypass: Not frontend HTML type 01/22/23 00:38:20.985 [178.xxx.x.xxx:12416 1 362] GUI bypassed by no counter 01/22/23 00:38:20.985 [178.xxx.x.xxx:12416 1 362] [Optm] bypass: Not frontend HTML type 01/22/23 00:38:20.985 [178.xxx.x.xxx:12416 1 362] Response headers --- array ( 0 => 'Content-Type: application/json; charset=UTF-8', 1 => 'X-Robots-Tag: noindex', 2 => 'Link: <https://mydomain.com/wp-json/>; rel="https://api.w.org/"', 3 => 'X-Content-Type-Options: nosniff', 4 => 'Access-Control-Expose-Headers: X-WP-Total, X-WP-TotalPages, Link', 5 => 'Access-Control-Allow-Headers: Authorization, X-WP-Nonce, Content-Disposition, Content-MD5, Content-Type', 6 => 'Allow: GET', 7 => 'X-LiteSpeed-Tag: 8051_HTTP.200', 8 => 'Vary: Origin', 9 => 'X-LiteSpeed-Cache-Control: no-cache', ) 01/22/23 00:38:20.985 [178.xxx.x.xxx:12416 1 362] End response --------------------------------------------------------------------------------
Here is debug_purge.log:
01/22/23 00:38:20.262 [178.xxx.x.xxx:12416 1 tyM] ??</img> ------POST HTTP/1.1 (HTTPS) /wp-json/contact-form-7/v1/contact-forms/90072/feedback 01/22/23 00:38:20.262 [178.xxx.x.xxx:12416 1 tyM] Query String: 01/22/23 00:38:20.262 [178.xxx.x.xxx:12416 1 tyM] HTTP_REFERER: https://mydomain.com/cache-form-test/ 01/22/23 00:38:20.262 [178.xxx.x.xxx:12416 1 tyM] User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36 01/22/23 00:38:20.262 [178.xxx.x.xxx:12416 1 tyM] Accept: application/json, */*;q=0.1 01/22/23 00:38:20.262 [178.xxx.x.xxx:12416 1 tyM] Accept Encoding: gzip 01/22/23 00:38:20.262 [178.xxx.x.xxx:12416 1 tyM] X-LSCACHE: true 01/22/23 00:38:20.262 [178.xxx.x.xxx:12416 1 tyM] X-LiteSpeed-Purge: public,8051_ => LiteSpeed\LSC->send_headers()@597 => WP_Hook->apply_filters(,ARRAY)@307 => WP_Hook->do_action(ARRAY)@331 => /home//mydomain.com/public_html/wp-includes/load.php@474
what does that plugin do ? because from the log , it triggers the post status change
LiteSpeed\Purge->purge_publish(publish,new)
@qtwrk this Flamingo plugin is from the author of the “Contact Form 7” plugin: https://www.ads-software.com/plugins/flamingo/
Is a message storage plugin (store submitted forms data). When form is submitted, the plugin creates a custom post:
post_type = flamingo_inboundBut why is the home page being purged?
@qtwrk I did some testing and the problem with clearing the homepage cache is not only related to the Flamingo plugin, but occurs when any custom post is added. So i have two questions:
- Why is the homepage cache cleared after creating a new post if I don’t have any checkboxes checked here:
Cache -> Purge -> Auto Purge Rules For Publish/Update - How to prevent clearing any cache for the selected post type? Flamingo is a typical “backend” plugin, only for admins and I don’t want to clear cache after adding a new “flamingo_inbound” post.
1) there is also an hardcoded purge , not controllable by setting
2) it’s gonna be bit of hard for this , please try this code
function lscwp_suppress_purge_update( $new_status, $old_status, $post ) { if ( $new_status != 'publish' && $old_status != 'publish' ) { return; } ob_start( function($buffer) use ($post) { @header("X-LiteSpeed-Purge: " . LSWCP_TAG_PREFIX . "_Po." . $post->ID ); return $buffer; } ); } add_action( 'transition_post_status', 'lscwp_suppress_purge_update', 10, 3 );
to theme’s functions.php , it should suppress all other purge header and only do
post id
purge , see if this helps.@qtwrk thanks for your help.
- Hardcoded in Flamingo or LiteSpeed?
- This code works all too well ?? The cache is not cleared when I add a page, blog post or other custom posts. I need to get this system behavior:
– Cache -> Purge -> Auto Purge Rules For Publish/Update: All pages
– Add/update page: purge all
– Add/update blog post: purge all
– Add/update my custom post type: purge all
– Add/update post_type=flamingo_inbound: not purge
please try add another if statement before
ob_start
lineif ( ‘flamingo_inbound’ == get_post_type() ) {
return;
}
assuming flamingo_inbound is the post type name
@qtwrk The cache is still cleared when a “flamingo_inbound” post is created. To be honest, I don’t understand how this code would prevent cache clearing ??
function lscwp_suppress_purge_update( $new_status, $old_status, $post ) { if ( $new_status != 'publish' && $old_status != 'publish' ) { return; } if ( $post->post_type == 'flamingo_inbound' ) { file_put_contents('cache.log', $post->post_type . " [old: $old_status] [new: $new_status]\n", FILE_APPEND); return; } ob_start( function($buffer) use ($post) { @header("X-LiteSpeed-Purge: " . LSWCP_TAG_PREFIX . "_Po." . $post->ID ); return $buffer; } ); } add_action( 'transition_post_status', 'lscwp_suppress_purge_update', 10, 3 );
As you can see I added a debug log. After submitting the form, I see in the cache.log:
flamingo_inbound [old: new] [new: publish]
well , logically , when plugins purges the cache , it sends out a http response header as
x-litespeed-purge: xxx, xxx, xxx
followed with series of tag that is tagged for each purges , and the any pages contains one of these tags will be purgedso ideally , I was trying to use
@header()
function to suppress/override the header sent out by plugin , maybe it didn’t work out as expected , but at this point , will need the server log to verify what is the actual header it received@qtwrk I think the if condition is in the wrong place. Shouldn’t it look like this?
ob_start( function($buffer) use ($post) { if ( $post->post_type == 'flamingo_inbound' ) { // suppress purge } else { // send standard header } } );
I just need to know what these headers should look like ??
the header should be like
x-litespeed-purge: xxx_Po.1234
where
xxx
should the prefix of your site , you can grab it from constantLSWCP_TAG_PREFIX
and 1234 should be the post ID of your custom type post to purge that speicifc post
This code works as expected. When a post like “flamingo_inbound” appears, the cache is not cleared. I think we can consider the problem solved ??
function lscwp_suppress_purge_update( $new_status, $old_status, $post ) { if ( $post->post_type != 'flamingo_inbound' ) { return; } ob_start( function($buffer) use ($post) { @header("X-LiteSpeed-Purge: " . LSWCP_TAG_PREFIX . "_Po." . $post->ID ); return $buffer; } ); } add_action( 'transition_post_status', 'lscwp_suppress_purge_update', 10, 3 );
- Why is the homepage cache cleared after creating a new post if I don’t have any checkboxes checked here:
- The topic ‘Flamingo plugin and home page cache’ is closed to new replies.