Optimize Transient cache purge
Hopefully, this will work better with external object caches.
This commit is contained in:
parent
d1aa57453b
commit
e019391e72
@ -279,7 +279,7 @@ Fictioneer customizes WordPress by using as many standard action and filter hook
|
||||
| `customize_register` | `fictioneer_add_customizers` (20)
|
||||
| `customize_save_after` | `fictioneer_watch_for_customizer_updates` (10)
|
||||
| `delete_comment` | `fictioneer_delete_cached_story_card_by_comment` (10), `fictioneer_decrement_story_comment_count` (10)
|
||||
| `delete_post` | `fictioneer_refresh_post_caches` (20), `fictioneer_track_chapter_and_story_updates` (10), `fictioneer_update_modified_date_on_story_for_chapter` (10), `fictioneer_purge_transients` (10)
|
||||
| `delete_post` | `fictioneer_refresh_post_caches` (20), `fictioneer_track_chapter_and_story_updates` (10), `fictioneer_update_modified_date_on_story_for_chapter` (10), `fictioneer_purge_transients_after_update` (10)
|
||||
| `do_feed_rss2` | `fictioneer_main_rss_template` (10)
|
||||
| `do_meta_boxes` | `fictioneer_remove_custom_fields_meta_boxes` (1)
|
||||
| `edit_comment` | `fictioneer_comment_edit` (20), `fictioneer_edit_comment` (10)
|
||||
@ -298,15 +298,15 @@ Fictioneer customizes WordPress by using as many standard action and filter hook
|
||||
| `publish_to_draft` | `fictioneer_chapter_to_draft` (10)
|
||||
| `rest_api_init` | `fictioneer_register_endpoint_get_story_comments` (10)
|
||||
| `restrict_manage_posts` | `fictioneer_add_chapter_story_filter_dropdown` (10)
|
||||
| `save_post` | `fictioneer_refresh_chapters_schema` (20), `fictioneer_refresh_chapter_schema` (20), `fictioneer_refresh_collections_schema` (20), `fictioneer_refresh_post_caches` (20), `fictioneer_refresh_post_schema` (20), `fictioneer_refresh_recommendations_schema` (20), `fictioneer_refresh_recommendation_schema` (20), `fictioneer_refresh_stories_schema` (20), `fictioneer_refresh_story_schema` (20), `fictioneer_save_seo_metabox` (10), `fictioneer_save_word_count` (10), `fictioneer_track_chapter_and_story_updates` (10), `fictioneer_update_modified_date_on_story_for_chapter` (10), `fictioneer_update_shortcode_relationships` (10), `fictioneer_purge_transients` (10), `fictioneer_save_story_metaboxes` (10), `fictioneer_save_chapter_metaboxes` (10), `fictioneer_save_extra_metabox` (10), `fictioneer_save_support_links_metabox` (10), `fictioneer_save_collection_metaboxes` (10), `fictioneer_save_recommendation_metaboxes` (10), `fictioneer_save_post_metaboxes` (10), `fictioneer_delete_cached_story_card_after_update` (10), `fictioneer_rebuild_story_data_collection` (999), `fictioneer_post_chapter_to_discord` (99), `fictioneer_bulk_edit_save_patreon` (10), `fictioneer_bulk_edit_save_chapter_fields` (10)
|
||||
| `save_post` | `fictioneer_refresh_chapters_schema` (20), `fictioneer_refresh_chapter_schema` (20), `fictioneer_refresh_collections_schema` (20), `fictioneer_refresh_post_caches` (20), `fictioneer_refresh_post_schema` (20), `fictioneer_refresh_recommendations_schema` (20), `fictioneer_refresh_recommendation_schema` (20), `fictioneer_refresh_stories_schema` (20), `fictioneer_refresh_story_schema` (20), `fictioneer_save_seo_metabox` (10), `fictioneer_save_word_count` (10), `fictioneer_track_chapter_and_story_updates` (10), `fictioneer_update_modified_date_on_story_for_chapter` (10), `fictioneer_update_shortcode_relationships` (10), `fictioneer_purge_transients_after_update` (10), `fictioneer_save_story_metaboxes` (10), `fictioneer_save_chapter_metaboxes` (10), `fictioneer_save_extra_metabox` (10), `fictioneer_save_support_links_metabox` (10), `fictioneer_save_collection_metaboxes` (10), `fictioneer_save_recommendation_metaboxes` (10), `fictioneer_save_post_metaboxes` (10), `fictioneer_delete_cached_story_card_after_update` (10), `fictioneer_rebuild_story_data_collection` (999), `fictioneer_post_chapter_to_discord` (99), `fictioneer_bulk_edit_save_patreon` (10), `fictioneer_bulk_edit_save_chapter_fields` (10)
|
||||
| `send_headers` | `fictioneer_block_pages_from_indexing` (10)
|
||||
| `show_user_profile` | `fictioneer_custom_profile_fields` (20)
|
||||
| `shutdown` | `fictioneer_save_story_card_cache` (10), `fictioneer_save_query_result_cache_registry` (10)
|
||||
| `switch_theme` | `fictioneer_theme_deactivation` (10)
|
||||
| `template_redirect` | `fictioneer_generate_epub` (10), `fictioneer_oauth2_process` (10), `fictioneer_logout` (10), `fictioneer_disable_attachment_pages` (10), `fictioneer_gate_unpublished_content` (10), `fictioneer_serve_sitemap` (10), `fictioneer_redirect_story` (10)
|
||||
| `transition_post_status` | `fictioneer_log_story_chapter_status_changes` (10), `fictioneer_chapter_future_to_publish` (10), `fictioneer_post_story_to_discord` (99)
|
||||
| `trashed_post` | `fictioneer_refresh_post_caches` (20), `fictioneer_track_chapter_and_story_updates` (10), `fictioneer_update_modified_date_on_story_for_chapter` (10), `fictioneer_purge_transients` (10), `fictioneer_remove_chapter_from_story` (10)
|
||||
| `untrash_post` | `fictioneer_refresh_post_caches` (20), `fictioneer_track_chapter_and_story_updates` (10), `fictioneer_update_modified_date_on_story_for_chapter` (10), `fictioneer_purge_transients` (10)
|
||||
| `trashed_post` | `fictioneer_refresh_post_caches` (20), `fictioneer_track_chapter_and_story_updates` (10), `fictioneer_update_modified_date_on_story_for_chapter` (10), `fictioneer_purge_transients_after_update` (10), `fictioneer_remove_chapter_from_story` (10)
|
||||
| `untrash_post` | `fictioneer_refresh_post_caches` (20), `fictioneer_track_chapter_and_story_updates` (10), `fictioneer_update_modified_date_on_story_for_chapter` (10), `fictioneer_purge_transients_after_update` (10)
|
||||
| `update_option_*` | `fictioneer_update_option_disable_extended_chapter_list_meta_queries` (10), `fictioneer_update_option_disable_extended_story_list_meta_queries` (10)
|
||||
| `wp_ajax_*` | `fictioneer_ajax_clear_my_checkmarks` (10), `fictioneer_ajax_clear_my_comments` (10), `fictioneer_ajax_clear_my_comment_subscriptions` (10), `fictioneer_ajax_clear_my_follows` (10), `fictioneer_ajax_clear_my_reminders` (10), `fictioneer_ajax_delete_epub` (10), `fictioneer_ajax_delete_my_account` (10), `fictioneer_ajax_delete_my_comment` (10), `fictioneer_ajax_edit_comment` (10), `fictioneer_ajax_get_avatar` (10), `fictioneer_ajax_get_comment_form` (10), `fictioneer_ajax_get_comment_section` (10), `fictioneer_ajax_get_finished_checkmarks_list` (10), `fictioneer_ajax_get_follows_list` (10), `fictioneer_ajax_get_follows_notifications` (10), `fictioneer_ajax_get_reminders_list` (10), `fictioneer_ajax_mark_follows_read` (10), `fictioneer_ajax_moderate_comment` (10), `fictioneer_ajax_report_comment` (10), `fictioneer_ajax_save_bookmarks` (10), `fictioneer_ajax_set_checkmark` (10), `fictioneer_ajax_submit_comment` (10), `fictioneer_ajax_toggle_follow` (10), `fictioneer_ajax_toggle_reminder` (10), `fictioneer_ajax_unset_my_oauth` (10), `fictioneer_ajax_get_user_data` (10), `fictioneer_ajax_get_auth` (10), `fictioneer_ajax_purge_schema` (10), `fictioneer_ajax_purge_all_schemas` (10), `fictioneer_ajax_reset_theme_colors` (10), `fictioneer_ajax_search_posts_to_unlock` (10), `fictioneer_ajax_get_chapter_group_options` (10)
|
||||
| `wp_ajax_nopriv_*` | `fictioneer_ajax_get_comment_form` (10), `fictioneer_ajax_get_comment_section` (10), `fictioneer_ajax_submit_comment` (10), `fictioneer_ajax_get_auth` (10)
|
||||
|
@ -14,8 +14,7 @@
|
||||
|
||||
function fictioneer_watch_for_customizer_updates() {
|
||||
// Transient caches
|
||||
fictioneer_delete_transients_like( 'fictioneer_' );
|
||||
fictioneer_purge_nav_menu_transients();
|
||||
fictioneer_delete_layout_transients();
|
||||
|
||||
// Rebuild customize stylesheet
|
||||
fictioneer_build_customize_css();
|
||||
|
@ -795,6 +795,20 @@ if ( FICTIONEER_ENABLE_STORY_DATA_META_CACHE ) {
|
||||
// PURGE CACHE TRANSIENTS
|
||||
// =============================================================================
|
||||
|
||||
/**
|
||||
* Purge layout-related Transients
|
||||
*
|
||||
* @since 5.25.0
|
||||
*/
|
||||
|
||||
function fictioneer_delete_layout_transients() {
|
||||
fictioneer_purge_nav_menu_transients();
|
||||
fictioneer_purge_story_card_cache();
|
||||
fictioneer_delete_transients_like( 'fictioneer_shortcode' );
|
||||
fictioneer_delete_transients_like( 'fictioneer_taxonomy_submenu_' );
|
||||
delete_transient( 'fictioneer_dynamic_scripts_version' );
|
||||
}
|
||||
|
||||
/**
|
||||
* Purge Transients used for caching when posts are updated
|
||||
*
|
||||
@ -804,7 +818,7 @@ if ( FICTIONEER_ENABLE_STORY_DATA_META_CACHE ) {
|
||||
* @param int $post_id Updated post ID.
|
||||
*/
|
||||
|
||||
function fictioneer_purge_transients( $post_id ) {
|
||||
function fictioneer_purge_transients_after_update( $post_id ) {
|
||||
// Prevent multi-fire
|
||||
if ( fictioneer_multi_save_guard( $post_id ) ) {
|
||||
return;
|
||||
@ -818,7 +832,7 @@ function fictioneer_purge_transients( $post_id ) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Add or remove actions for `fictioneer_purge_transients`
|
||||
* Add or remove actions for `fictioneer_purge_transients_after_update`
|
||||
*
|
||||
* @since 5.5.2
|
||||
*
|
||||
@ -830,11 +844,11 @@ function fictioneer_toggle_transient_purge_hooks( $add = true ) {
|
||||
|
||||
if ( $add ) {
|
||||
foreach ( $hooks as $hook ) {
|
||||
add_action( $hook, 'fictioneer_purge_transients' );
|
||||
add_action( $hook, 'fictioneer_purge_transients_after_update' );
|
||||
}
|
||||
} else {
|
||||
foreach ( $hooks as $hook ) {
|
||||
remove_action( $hook, 'fictioneer_purge_transients' );
|
||||
remove_action( $hook, 'fictioneer_purge_transients_after_update' );
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -842,7 +856,7 @@ function fictioneer_toggle_transient_purge_hooks( $add = true ) {
|
||||
fictioneer_toggle_transient_purge_hooks();
|
||||
|
||||
/**
|
||||
* Purge nav menu Transients on menu updates
|
||||
* Purge nav menu Transients
|
||||
*
|
||||
* @since 5.6.0
|
||||
*/
|
||||
@ -850,6 +864,8 @@ fictioneer_toggle_transient_purge_hooks();
|
||||
function fictioneer_purge_nav_menu_transients() {
|
||||
delete_transient( 'fictioneer_main_nav_menu_html' );
|
||||
delete_transient( 'fictioneer_footer_menu_html' );
|
||||
delete_transient( 'fictioneer_mobile_nav_menu_html' );
|
||||
fictioneer_delete_transients_like( 'fictioneer_taxonomy_submenu_' );
|
||||
}
|
||||
add_action( 'wp_update_nav_menu', 'fictioneer_purge_nav_menu_transients' );
|
||||
|
||||
|
@ -237,8 +237,8 @@ add_action( 'after_setup_theme', 'fictioneer_theme_setup' );
|
||||
*/
|
||||
|
||||
function fictioneer_purge_caches_after_update() {
|
||||
// Transients
|
||||
fictioneer_delete_transients_like( 'fictioneer_' );
|
||||
// Transients (fast, assuming this also causes a purge of external object caches)
|
||||
fictioneer_delete_transients_like( 'fictioneer_', true );
|
||||
|
||||
// Cache busting string
|
||||
fictioneer_regenerate_cache_bust();
|
||||
|
@ -459,10 +459,6 @@ function fictioneer_purge_theme_caches() {
|
||||
|
||||
$wpdb->query( $wpdb->prepare( $sql, 'fictioneer_story_data_collection', 'fictioneer_story_chapter_index_html' ) );
|
||||
|
||||
// Transients
|
||||
fictioneer_purge_nav_menu_transients();
|
||||
fictioneer_delete_transients_like( 'fictioneer_' );
|
||||
|
||||
// Delete cached files
|
||||
$files = glob( trailingslashit( fictioneer_get_theme_cache_dir( 'purge_theme_caches' ) ) . '*' );
|
||||
|
||||
@ -483,6 +479,11 @@ function fictioneer_purge_theme_caches() {
|
||||
// Query result cache registry
|
||||
delete_option( 'fictioneer_query_cache_registry' );
|
||||
|
||||
// Transients
|
||||
fictioneer_delete_layout_transients();
|
||||
fictioneer_delete_transients_like( 'fictioneer_shortcode' );
|
||||
fictioneer_delete_transients_like( 'fictioneer_', true ); // Fast, but not safe for external object caches
|
||||
|
||||
// Log
|
||||
fictioneer_log( __( 'Purged theme caches.', 'fictioneer' ) );
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user