= v23.08.02 (2023-11-13) = - Fixed: Tweaks::post_missed_schedule() -> Prevent post publish immediately. - Fixed: WP_Object_Cache() -> Add setters and getters for backwards compatibility. - Added: TWEAKS_SINGLESEARCHREDIRECT_DISABLED constant to disable redirection of single search results to the page. - Updated: Tested up to 6.4. = v23.08.01 (2023-08-19) = - Fixed: LimitBulkedit::bulk_editing_is_limited() -> Deprecated Constant FILTER_SANITIZE_STRING. - Fixed: restrict_api error notice. - Fixed: Outdated php warning is triggered when Disable Serve Happy Checking is enabled. - Updated: Tested up to 6.3. = v22.07.05 (2023-03-18) = - Fixed: Plugin::register_plugin_hooks() -> Undefined property: stdClass::$slug. - Fixed: Event::garbage_collector() -> Stale cache, invalid filter for comment_feed. - Fixed: Event::garbage_collector() -> Stale cache, add filter for adjacent_post, wp_get_archives and get_comment_child_ids. - Fixed: Tweaks::wplazyload() -> Add filter for wp_get_attachment_image_attributes. - Fixed: WP_Object_Cache::dc_save() -> Returns false if data type is "unknown type". - Added: Filesystem::is_wp_cache_group_queries() -> Match group for *-queries. - Added: WP_Object_Cache::maybe_expire() -> Match group for *-queries. Thanks to Ronny from web55.se for bug report. = v22.07.04 (2023-03-01) = - Fixed: Advanced Post Cache -> Only visible to wp < 6.1.1 as it is already implemented in wp core (WP_Query caching). - Fixed: Filesystem::shutdown_cleanup() -> Avoid cleanup on shutdown if a file is empty. - Fixed: Plugin::register_plugin_hooks() -> Do not load the CronAgent class if cronbot is disabled. - Fixed: TermCount() -> Invalid usage of clean_term_cache. - Fixed: WP_Object_Cache::$cache_hits, WP_Object_Cache::$cache_misses -> Retain same as non persistent. - Fixed: Prevent performance-lab from overwriting the object cache drop-in. - Fixed: Becache::export_alloptions() -> Only export option with autoload 'yes' and not transient. - Fixed: Becache::store_cache() -> Miss match array_serialize. - Added: WP_Object_Cache::$persistent_cache_hits -> Stats hits from cache file. - Added: Tweaks::wpquery() -> wp_allow_query_attachment_by_filename for wp > 6.0.1. - Added: Configuration -> Cache Options, Retain Transients in Db. - Added: Configuration -> Optimisations, Limit Bulk Edit Actions. - Added: Configuration -> Wp Tweaks, Deactivate Post Via Email. - Added: DOCKET_CACHE_TRANSIENTDB constant to enable retaining Transients in the database. - Added: DOCKET_CACHE_IGNORED_TRANSIENTDB constant. A list of cache keys that remain in the object cache instead of the db. - Added: DOCKET_CACHE_POSTVIAEMAIL constant to enable deactivation Post Via Email. - Added: DOCKET_CACHE_LIMITBULKEDIT constant to enable Limit Bulk Edit Actions. - Added: DOCKET_CACHE_LIMITBULKEDIT_LIMIT constant to change bulk edit limit. By default it is set as 100.. - Changed: Advanced Post Cache, some part of the code has been moved to Tweaks::wpquery(). - Removed: WP_Object_Cache::is_data_uptodate() -> No longer needed. - Updated: Symfony component -> symfony/var-exporter v5.4.21. = v22.07.03 (2023-02-07) = - Fixed: Tweaks::woocommerce_misc() -> Check if action_scheduler_migration_status is complete to prevent the list on the Scheduled Actions page from disappearing. - Fixed: Tweaks::woocommerce_widget_remove() -> The classic widget is not disabled. - Fixed: Plugin::get_precache_maxfile() -> Invalid constant, replace maxfile with precache_maxfile. - Fixed: Filesystem::sanitize_precache_maxfile() -> Set the limit to 100 by default. - Fixed: Becache::export() -> Invalid expiration time. Already in timestamp format not in seconds. - Fixed: WP_Object_Cache::dc_save() -> Serialize twice when checking object size. - Fixed: Configuration -> A notice is not shown when the constant is already defined. - Added: Configuration -> Storage Options, Check file limits in real-time and Exclude Empty Object Data. - Added: Configuration -> Runtime Options, Deactivate Concatenate WP-Admin Scripts and Deactivate WP Cron. - Added: WP-CLI command -> run:optimizedb. - Added: DOCKET_CACHE_MAXFILE_LIVECHECK constant to enable checking file limits in real-time. - Added: DOCKET_CACHE_PRECACHE_MAXKEY, DOCKET_CACHE_PRECACHE_MAXGROUP constant to limit cache keys and groups. - Added: DOCKET_CACHE_STALECACHE_IGNORE constant to enable excluding stale cache from being stored on disk. - Added: DOCKET_CACHE_EMPTYCACHE constant to enable excluding empty caches from being stored on disk. - Added: DOCKET_CACHE_AUTOUPDATE_TOGGLE constant, only to sync with WordPress auto_update_plugins option. - Added: DOCKET_CACHE_GCRON_DISABLED constant to disable garbage collector cron event. - Added: Filesystem::suspend_cache_write() -> Temporarily suspends new cache from being stored on disk. - Changed: DOCKET_CACHE_AUTOUPDATE constant can only be defined manually to force an automatic update. - Improved: Increase timeout limit if lower than 180 seconds. - Improved: Constans::maybe_define() -> Keep track of constants that have been defined in the $GLOBAL['DOCKET_CACHE_RUNTIME'] list. - Improved: WP_Object_Cache::maybe_expire() -> Set expiration to 1 day for key/group matches with the stale cache. - Improved: Event::garbage_collector() -> Improve wc_cache filtering and other possible stale caches. - Improved: WP_Object_Cache::dc_code() -> Use native var_export for data type objects and arrays if only have stdClass. - Removed: Event::watchproc() -> No longer needed. - Updated: DOCKET_CACHE_ADVCPOST_POSTTYPE -> Set the built-in Post Type as the default. - Updated: Filesystem::get_max_execution_time() -> Accept value to set time limit. Thanks to Kevin Shenk of Avunu LLC for providing access to the staging server for testing purposes. = v22.07.02 (2022-12-10) = - Fixed: Tweaks::cache_http_response() -> Default TTL. - Fixed: Tweaks::wpservehappy() -> missing array key. - Added: wp_cache_supports() function. - Changed: Tweaks::cache_http_response() -> Use transient instead of wp_cache. - Changed: Disable Auto update by default. - Changed: Disable Advanced Post Cache by default. - Tested up to 6.1. = v22.07.01 (2022-07-15) = - Fixed: Plugin:cleanuppost() -> Invalid index for trashbin. - Fixed: MoCache() -> Add $entries, $headers properties to avoid warning on get_translations_for_domain. - Updated: Symfony component -> symfony/var-exporter. = v21.08.11 (2022-05-30) = - Fixed: Avoid calling Filesystem::close_buffer() if a process involved accessing a disk. - Fixed: Removed handling stale cache on shutdown. - Added: Garbage Collector Status -> Cleanup Stale Cache. - Improved: Collected stale cache will be handled by Garbage Collector. = v21.08.10 (2022-05-20) = - Changed: Disable "CHUNKCACHEDIR" by default. Let's users choose it depending on their hosting environment. = v21.08.09 (2022-05-20) = - Fixed: WP_Object_Cache::maybe_expire() -> missing preg_match parameter. Thanks to @carmpocalypse for bug report. = v21.08.08 (2022-05-19) = - Fixed: Don't remove cron event without a hook, let's WordPress handles it. - Fixed: WP_Object_Cache::dc_close() -> Only run one time per instance. - Fixed: WP_Object_Cache::maybe_expire() -> Check cache key. - Added: CACHEHTTPRESPONSE, CACHEHTTPRESPONS_TTL, CACHEHTTPRESPONS_INCLUDE, CACHEHTTPRESPONS_EXCLUDE constants. - Changed: Disable "Auto Remove Stale Cache" by default. Let's users choose it depending on their cpu/storage speeds limit. = v21.08.07 (2022-05-13) = - Fixed: Tweaks::wpembed() -> body_class missing seconds arguments that require by some themes. - Fixed: Tweaks::wpembed() -> Disable body_class filter, cause unpredictable syntax error on some themes. Thanks to @simonhawketts for bug report. = v21.08.06 (2022-05-13) = - Fixed: WP_Object_Cache::dc_close() -> Remove stale cache abandoned by WordPress, WooCommerce, Advanced Post Cache after doing cache invalidation. - Fixed: WP_Object_Cache::dc_get() -> The transient should return false if does not have a value or has expired. - Fixed: WP_Object_Cache::dc_get() -> Run maybe_unserialize to check and unserialize string data when failed to convert into an array. - Fixed: WP_Object_Cache::dc_save() -> Reduce cache miss if contain objects of headers remote requests. - Fixed: WP_Object_Cache::dc_save() -> Return true and avoid storing on disk if the transient has no value. - Fixed: WP_Object_Cache() -> dc_precache_load(), dc_precache_set() -> Do check precache max list. - Fixed: Tweaks() -> wpbrowsehappy(),wpservehappy() -> Use the pre_site_transient filter instead of blocking API requests, makes the query monitor happy. - Fixed: RecursiveDirectoryIterator -> Do check max_execution_time to avoid a fatal timeout. - Fixed: WP_Object_Cache() -> dc_precache_load(), dc_precache_set() -> Do check max_execution_time to avoid a fatal timeout. - Fixed: Event() -> optimizedb(), garbage_collector() -> Do check max_execution_time to avoid a fatal timeout. - Fixed: CronAgent::run_wpcron() -> Do check max_execution_time to avoid a fatal timeout. - Fixed: Tweaks::wpembed() -> Invalid body_class hook arguments. - Fixed: Plugin::get_opcache_status() -> OPcache File Cache Only -> Use getATime instead of getMTime to match with in-memory last_used_timestamp. - Fixed: Overview -> Object Cache -> Data is not updated when opcache is not available. - Fixed: Overview -> Flush Object Cache -> Immediately remove the cache file instead of truncate. - Added: WP-CLI command -> flush:transient, flush:advcpost, flush:menucache. - Added: wp_cache_flush_runtime(), wp_cache_*_multiple() functions. - Added: wp_cache_flush_group_match() -> Remove cache file match with the group name in files. - Added: WP_Object_Cache::dc_stalecache_filter() -> Capture cache key pattern match with the stale cache. - Added: WP_Object_Cache::add_stalecache() -> Set a list of stale cache to remove when Object Cache shutdown. - Added: Configuration -> Admin Interface -> Additional Flush Cache Action Button. - Added: Configuration -> Cache Options -> Post Caching Any Post Type. - Added: Configuration -> Storage Options -> Chunk Cache Directory, Auto Remove Stale Cache, Cache Files Limit, Cache Disk Limit. - Added: Opcache Viewer -> Possible to display a notice if the current site path has been blacklisted in opcache.blacklist_filename directive. - Added: DOCKET_CACHE_CHUNKCACHEDIR constant to enable chunk cache files into a smaller directory to avoid an excessive number of cache files in a single directory. - Added: DOCKET_CACHE_ADVCPOST_POSTTYPE constant to allow cache other post types. - Added: DOCKET_CACHE_ADVCPOST_POSTTYPE_ALL constant to allow cache any post types. - Added: DOCKET_CACHE_FLUSH_STALECACHE constant to enable auto remove stale cache. - Added: DOCKET_CACHE_PRECACHE_MAXLIST constant to limit cache entries per URL. - Added: DOCKET_CACHE_IGNORE_REQUEST constant to bypass object cache match key from POST, GET variables. Thanks to Jordan from @websavers for improvement feedback. = v21.08.05 (2022-04-22) = - Fixed: object-cache.php -> Checking is file object-cache-delay.txt. - Fixed: OPcacheView::get_usage() -> checking if opcache_statistics, memory_usage exists. - Fixed: Compability with OPcache File Cache Only (opcache.file_cache_only=1). - Added: Woo Tweaks -> Deactivate WooCommerce WP Dashboard -> Disable setup widget. - Added: Woo Tweaks -> Misc WooCommerce Tweaks -> Enable WooCommerce no-cache headers. - Added: Woo Tweaks -> Misc WooCommerce Tweaks -> Remove the WooCommerce usage tracker cron event. - Added: WP Tweaks -> Deactivate Browse Happy Checking. - Added: WP Tweaks -> Deactivate Serve Happy Checking. - Added: Filesystem::opcache_filecache_only() -> Determine OPcache in File Cache Only. - Added: Filesystem::opcache_filecache_scanfiles() -> Listing OPcache file cache. - Added: Filesystem::opcache_filecache_flush() -> Remove OPcache single file cache. - Added: Filesystem::opcache_filecache_reset() -> Empty OPcache file cache directory. - Updated: Symfony component -> symfony/polyfill-php80, symfony/var-exporter. - Updated: Advanced Post Caching tooltip description. - Updated: WP_Object_Cache::dc_precache() -> Ignore precache for /wp-admin/admin-ajax.php, /wp-cron.php, /xmlrpc.php, /robots.txt, /favicon.ico. - Updated: OPcache viewer -> layout for OPcache File Cache Only. Thanks to @123nadav and @jibsoux for improvement feedback. = v21.08.04 (2022-02-05) = - Added: WordPress Menu Caching. - Added: DOCKET_CACHE_MENUCACHE constant. - Added: DOCKET_CACHE_MENUCACHE_TTL constant. Thanks to @alriksson. = v21.08.03 (2021-11-29) = - Fixed: Filesystem::is_opcache_enable() -> do checking PHP INI disable_functions directive. - Fixed: Overview -> if OPcache enable and opcache_get_status function disabled, only show "Enabled". - Fixed: Flush OPcache -> show notice if opcache_reset function disabled. - Fixed: OPcache Viewer -> show notice if opcache_get_status, opcache_get_configuration function disabled. - Fixed: docketcache_runtime() -> only valid for PHP >= 7.2.5. Thanks to @robderijk. = v21.08.02 (2021-08-27) = - Fixed: opcacheviewer -> some filter parameters do not escape. Thanks to Erwan from WPScan. = v21.08.01 (2021-08-27) = - Changed: plugin options -> check critical version, disabled by default. - Changed: Mark 21.08.1 as a stable release. = v21.02.08 (2021-07-20) = - Fixed: Tweaks::http_headers_expect() -> only visible to wp < 5.8 since already included in core. - Fixed: Filesystem::is_request_from_theme_editor() -> checking if from plugin-editor. - Fixed: nwdcx_unserialize() -> checking if ABSPATH and WPINC defined. - Tested up to 5.8. = v21.02.07 (2021-07-02) = - Fixed: missing Becache.php in wp repo. = v21.02.06 (2021-07-02) = - Fixed: Plugin::site_url_scheme() -> strip whitespace. - Fixed: Tweaks::post_missed_schedule() -> remove sort by date. - Fixed: Tweaks::register_tweaks() -> run register_tweaks at shutdown, lock for 3 minutes. - Fixed: ReqAction::exit_failed() -> missing args. - Fixed: ReqAction::parse_action() -> replace $_GET, $_POST conditional with $_REQUEST. - Fixed: Canopt::put_config() -> check file exists before unlink. - Fixed: WP_Object_Cache::maybe_expire() -> exclude transient key health-check-site-status-result. - Fixed: CronAgent::run_wpcron() -> capture hook output if any. - Removed: Plugin::suspend_wp_options_autoload() -> already replace with Filesystem::optimize_alloptions(). - Added: Filesystem::keys_alloptions() -> list of core alloptions key. - Added: Action Hook -> 'docketcache/action/flushcache/object' to flush cache files. - Added: Becache::export() -> early cache for transient and alloptions. - Improved: Configuration -> change wording at Option label. - Improved: CronAgent::send_action() -> disconnect if object cache disabled. = v21.02.05 (2021-06-05) = - Fixed: Normalize a filesystem path on Windows. - Fixed: Plugin::cleanuppost() -> Invalid counting for trash. - Fixed: Tweaks::woocommerce_crawling_addtochart_links() -> Checking user-agent to avoid redundancy in robots.txt. - Fixed: OPcache -> OPcache Config. Proper link directives name to php documentation. - Added: Configuration -> Actions -> Runtime code. install/uninstall runtime code. - Added: Configuration -> Runtime Options. Possible to handles wp debug and auto update core. - Added: OPcache -> OPcache Files -> Items limit selection. Limit items to display. - Improved: runtime code and how to handle wp constants. - Removed: Our sequence order to the first index in the plugin list. Thanks to @kotyarashop for reporting an issue with robots.txt. = v21.02.04 (2021-05-24) = - Fixed: View::code_focus() -> remove {behavior: "smooth"} to correct scroll position in firefox. - Fixed: OPcacheView::get_files() -> normalize files path. - Fixed: Filesystem::opcache_reset() -> remove additional invalidate files, issue with memory burst when run admin preloading. - Fixed: ReqAction::run_action() -> prevent run opcache_reset after flush object cache. - Fixed: Tweaks::limit_http_request() -> allows admin-ajax.php and .local hostname. - Added: Tweaks::woocommerce_crawling_addtochart_links() -> simple tweaks to prevent robots from crawling add-to-cart links. - Added: LIMITHTTPREQUEST_WHITELIST constant -> list of hostname to exclude from checking. - Added: Tweaks::wpdashboardnews() -> remove Events & News Feed in WP dashboard. - Added: Cronbot -> Run Now for single event. = v21.02.03 (2021-04-20) = - Fixed: WpConfig::has() -> missing argument for nwdcx_throwable. Thanks to Stanislav Khromov for testing with php 8. https://github.com/nawawi/docket-cache/issues/10 = v21.02.02 (2021-03-25) = - Fixed: Plugin::is_subpage() -> opcach viewer left menu link. - Fixed: Filesystem::fastcgi_close() -> Theme editor failed to verify updated file. - Added: Tweaks::http_headers_expect() -> HTTP Request Expect header tweaks. Thanks to Oleg for reporting an issue with Theme Editor https://docketcache.com/feedback/#comment-2 = v21.02.01 (2021-03-06) - Fixed: Filesystem::chmod() -> invalid mode for file. - Fixed: Filesystem::define_cache_path() -> avoid checking if the cache path exists and create the content path if define. - Fixed: Overview -> Cache Path not same with DOCKET_CACHE_PATH, due to error at define_cache_path(). - Added: Filesystem::mkdir_p() -> fix directory permissions issues, when web server and php has different user/group. - Added: Filesystem::touch() -> fix notice "Utime failed: Operation not permitted" when web server and php has different user/group. - Added: Filesysten::getchmod() -> gets file/dir permissions in octal format. - Added: OPcache viewer. - Added: sites selection for cleanup post on multisite. - Updated tested up to 5.7 - Improved: action notice at the configuration page. Thanks to @patrickwgs for reporting an issue on bedrock installation. = v21.01.01 (2021-02-03) - Fixed: Tweaks::woocommerce_cart_fragments_remove() -> check if "wc-cart-fragments" script exists. - Fixed: WP_Object_Cache::dc_precache_set -> ignore transient, site-transient. - Added: Configuration -> Runtime Options. - Added: Configuration -> Config reset. - Added: WP-CLI command -> runtime:install, runtime:reset. = v20.12.04 (2021-01-16) - Fixed: Limit WP-Admin HTTP Requests -> invalid variable pagenow. - Fixed: Cache Log -> use get_utc_offset() instead of date('T'). - Fixed: Overview Actions -> rename admin/actcmd.php to admin/actions.php. - Fixed: Cronbot Events -> display notice if failed to load EventList() . - Fixed: nwdcx_throwable() -> only save data if WP_DEBUG defined . - Fixed: Tweak::compat_notice() -> move to Plugin::compat_notice(), do check at CLI. - Fixed: Plugin::get_subpage() -> add checking for adx variable. - Fixed: OPcache flush -> lock for 20 seconds before accept new request. - Added: Filesystem() methods -> sanitize_precache_maxfile, sanitize_maxsize, sanitize_maxsizedisk. = v20.12.03 (2020-12-30) - Fixed: Auto-updates -> remove v20.11.05 workaround, had issue with opcache, enable/disable docket auto-updates only in docket cache -> configuration. - Fixed: nwdcx_cleanuptransient() -> didn't cleanup properly. - Added: Configuration -> Limit WP-Admin HTTP Requests. = v20.12.02 (2020-12-28) - Fixed: Filesystem::cache_size() -> getsize stat failed. - Fixed: Overview -> Object/WP OPcache Stats data empty called from worker. - Fixed: Plugin::active() -> Randomly slow. - Added: Configuration -> Flush OPcache On Deactivation. = v20.12.01 (2020-12-26) - Fixed: Event::register() -> cron_schedules, merge if not exists. - Fixed: ReqAction::screen_notice() -> missing cronbot executed events message. - Fixed: WP_Hook -> use PHP_INT_MIN instead of -PHP_INT_MAX for earlier sequence. - Added: WP_Object_Cache::dc_close() -> save precache after shutdown hooks. - Added: WP_Object_Cache::dc_precache_load -> replace dc_precache_get(). - Added: Filesystem::close_buffer() -> close fastcgi request if no output buffer. = v20.11.06 (2020-12-25) - Fixed: Plugin::get_opcache_status() -> Missing match pattern. - Fixed: Plugin::register_plugin_hooks() -> Redundant loading, change plugin_loaded to plugins_loaded. - Fixed: Filesystem::opcache_compile() -> Change filemtime early to 60 seconds. Opcache won't compile if file newer than runtime. - Fixed: WP_Object_Cache::dc_save() -> Remove change filemtime. Cache expiration now handles by timeout key. - Fixed: Event::garbage_collector() -> Filemtime comparison with maxttl only applies to cache file without timeout or 0. - Fixed: Event::register() -> Redundant loading, change plugin_loaded to plugins_loaded. - Fixed: Dropino::multinet_install() -> Wrong flags for file_put_contents. = v20.11.05 (2020-12-23) - Fixed: CronAgent::check_connection() -> close_ping() -> Invalid selfcheck delay. Set to 90 minutes instead of current time. - Fixed: Auto-updates -> wp >= 5.5 can't enable/disable auto-updates for docket cache at plugins page. Now, it should works vise-versa. - Fixed: ReqAction -> Error notice undefined variable nv. = v20.11.04 (2020-12-21) - Fixed: Admin Interface -> filter others admin notice using hook. - Fixed: Event -> rare condition checkversion cronagent process lock timestamp no effect. - Fixed: Event -> invalid remove event. - Fixed: Actions -> when disable object cache, it will stay disabled until enable it back. - Fixed: Notice -> only show compability notice at plugins, updates page and our overview page. - Added: Constans() -> option to reload config at dc* methods. - Added: Configuration -> deactivate WooCommerce Cart Fragments. - Added: nwdcx_cleanuptransient -> makes it reuseable for Event::delete_expired_transients_db(). = v20.11.03 (2020-12-14) - Fixed: Admin Interface -> action notice can't dismiss. - Fixed: Admin Notice -> exclude Dismissible Notices Handler dnh_dismissed_notices option from cache. - Added: Configuration -> remove the WordPress Application Passwords feature. = v20.11.02 (2020-12-09) - Fixed: PostCache::setup_hooks() -> removed deprecated jetpack hook instagram_cache_oembed_api_response_body. = v20.11.01 (2020-12-08) - Added: WP-CLI command -> run:gc, run:stats, run:cron, reset:lock, reset:cron, dropin:enable, dropin:disable, dropin:update, flush:precache - Fixed: Admin Interface -> only show our own notice. = v20.10.15 (2020-12-05) - Improved: on Admin Interface. - Fixed: Drop-in outdated notice. = v20.10.12 (2020-11-30) - Fixed: File cleanup -> use shutdown hook instead of register_shutdown_function to avoid issue with *some* page cache plugin. - Added: DOCKET_CACHE_PRECACHE_MAXFILE constant to limit precache file. = v20.10.10 (2020-11-30) - Fixed: Max Cache Size -> validate sizeof object instead of exported data. - Fixed: Filesystem -> use php shutdown at dump and unlink methods. - Added: Resc class -> handle base64 icons and image. - Added: Configuration -> option to remove WP Lazy Load and WP Sitemap. - Added: Configuration -> scroll at option position after select to change configuration. = v20.10.09 (2020-11-28) - Fixed: Filesystem::suspend_cache_file() -> use dump to avoid long locking. - Fixed: Filesystem::cache_get() -> catch Throwable, only filter cache file to avoid long locking. - Fixed: Filesystem::dump() -> remove retry, immediately return false if failed. - Fixed: Filesystem() -> only use register_shutdown_function to capture fatal error, other than that use wp shutdown hook. = v20.10.08 (2020-11-28) - Fixed: WP_Object_Cache::dc_save() -> cache meta data type, change string to array if original data serialized. - Fixed: WP_Object_Cache::dc_save() -> wrong logic causes a random delay if array size more than 1MB. = v20.10.07 (2020-11-26) - Fixed: Tweaks::misc() -> removed deprecated jetpack hook instagram_cache_oembed_api_response_body. - Fixed: Filesystem::validate_fatal_error_file() -> update timestamp. - Added: Filesystem::suspend_cache_file(). = v20.10.06 (2020-11-23) - Fixed: Filesystem::scanfiles() -> missing regex pattern for dump file. - Fixed: Filesystem::dump() -> retry to create a file if failed. - Fixed: WP_Object_Cache::dc_init() -> Flush Litespeed Cache admin notice if exists. - Added: Filesystem::dc_save() -> limit object size to 1000000. - Added: Garbage Collector -> action button output results. - Added: Filesystem::capture_fatal_error() -> attempt to fix any cache file error-prone. = v20.10.05 (2020-11-15) - Fixed: Litespeed Cache admin notice "Purged all caches successfully" still shown after dismiss. = v20.10.04 (2020-11-11) - Improved: CronAgent. - Improved: CLI. - Improved: Disk I/O and CPU usage. - Optimized WP Alloptions. = v20.10.03 (2020-11-03) - Fixed: nwdcx_optget() -> missing sql syntax. Thanks to Mark Barnes (@mark8barnes) for reporting this issue. = v20.10.02 (2020-11-03) - Fixed: output buffering issue with page caching. = v20.10.01 (2020-11-02) - Improved: precaching. - Improved: cache stats. - Improved: garbage collector. - Improved: disk I/O and CPU usage. - Added: new constant DOCKET_CACHE_CONTENT_PATH. = v20.09.07 (2020-10-28) - Fixed: Deactivate WooCommerce Widget, prevent error notice _doing_it_wrong for the_widget. - Fixed: Precaching, always strip query string doing_wp_cron. - Fixed: nwdcx_network_multi function, replace with simple query to detect multinetwork condition. = v20.09.06 (2020-10-27) - Fixed: Misc WooCommerce Tweaks, remove checking for woo class exist since we at the first sequence. - Fixed: Precaching, strip query string, replace preg_replace with strtok. - Added: Deactivate WooCommerce Admin, Widget, Dashboard Metabox to configuration page instead of bundling with misc tweaks. = v20.09.05 (2020-10-25) - Fixed: Suspend WP Options Autoload. Use hook instead of change autoload value in the database. WordPress will treat all key as autoload if none has set to yes. - Fixed: Drop-in after delay. Remove transient from database if expiry not set and already expired. - Added: Remove XML-RPC / Pingbacks, WP Header Junk into the configuration instead of bundling with Misc Performance Tweaks. - Added: Remove WP Emoji, WP Feed, WP Embed options. - Added: ReqAction class to handle action. - Added: wp_cache_flush_group. - Added: try to set SQL_BIG_SELECTS=1 for shared hosting. = v20.09.04 (20202-10-14) - Fixed: OPcache Stats, invalid calculation for cache files. - Fixed: Cronbot, run scheduled event in multisite. - Added: Optimize WP Query option at configuration page. - Added: the Check Critical Version description to comply with WordPress policy. = v20.09.03 (20202-10-11) - Added: Multisite Multi-Network. - Added: Object OPcache, WP OPcache stats. - Fixed: Admin interface, loading spinner should not display when no action. - Fixed: CronAgent::run_wpcron(), reset doing_cron if locked. - Fixed: CronAgent::run_wpcron(), halt if run reach maximum CRONBOT_MAX for site in multisite. = v20.09.02 (20202-10-06) - Cron event, docketcache_optimizedb and docketcache_checkversion only run on main site if multisite. - Cron event, checkversion change to every 3 days to avoid excessive process. - Cronbot, change Test Ping to use it own action, to avoid conflict with connect/disconnect action. - Cronbot, max to 5 sites if multisite, define DOCKET_CACHE_CRONBOT_MAX to change it. - CronAgent::send_action, allow capture error if second argument set to pong. - Canopt::keys, added description for each key. - Cleanup admin interface. = v20.09.01 (2020-10-05) - Improved: admin interface structure. - Improved: admin menu using top-level instead of submenu from settings. - Improved: Cronbot to support multisite. - Added: Actions pane at overview page to flush cache/OPcache and enable/disable object cache. - Added: Auto update options at configuration page. - Added: Cron event checkversion to check for critical update, define DOCKET_CACHE_CHECKVERSION constant to false to disable it. - Fixed: CronAgent issue with doing_cron locked on multisite. - Fixed: Cron event missing watchproc hook on unregister. = v20.08.18 (2020-09-29) - Fixed: Cache Log -> change to native file_put_contents instead of put() to avoid early unlock result to truncate. - Fixed: Filesystem::put() -> add blocking option to avoid early unlock. - Fixed: dc_save() -> invalid conditional for is_data_updated(). - Fixed: skip_stats() -> add checking for ignored groups. - Fixed: unlink -> add checking is_file to avoid php warning and make query-monitor happy. - Fixed: Canopt::setlock() -> set file permission if write true. - Added: DOCKET_CACHE_IGNORED_PRECACHE constant to exclude group:key from precaching. - Added: DOCKET_CACHE_IGNORED_GROUPKEY constant to exclude group:key from persistent cache. - Added: CLI command "unlock" to clear all lock files. = v20.08.17 (2020-09-27) - Fixed: CronAgent, woocommerce -> get_cart - not be called before the wp_loaded action. - Fixed: WP_Object_Cache::$cache_hits, WP_Object_Cache::$cache_misses -> hit rate. = v20.08.16 (2020-09-25) - Fixed: WP_Object_Cache::set() -> only write to disk if data change and expiry not 0. - Fixed: WP_Object_Cache::dc_precache_set -> only write to disk if data change. = v20.08.15 (2020-09-25) - Fixed: precaching, invalid conditional for query string. - Fixed: cache maxttl, missing timestamp in cache meta. - Fixed: cache, flush user_meta group before login and after logout. - Fixed: micro optimization, before using regex functions. - Fixed: transient, remove all from db before activate our dropin. = v20.08.14 (2020-09-24) - Fixed: unserialize data if serialized before coverting to php code. = v20.08.13 (2020-09-21) - Fixed: Advanced Post Cache, invalid comment counting. - Fixed: Precaching, exclude docketcache-post group. - Set garbage collector always enable. = v20.08.12 (2020-09-20) - Use our own locking functions instead of wp_cache_* functions. - Standardize hook prefix, rename docket-cache to docketcache. - Increase default maxfile to 50000. - Cronbot, remove scheduled events if hooks has errors or not exist. - Cronbot, added "Run All Now" at admin interface. - Garbage collector, remove older files if maxttl defined. By default set to 2 days (172800 seconds). - Cache group post_meta and options, set to expire in 24 hours if no expiration time. - Precaching, data expire set to 4 hours and maximum 5000 lists at a time. - Precaching, append site host as key to allow use it on multisite. - Precaching allow query string if user_logged_in() true and uri match with "/wp-admin/(network/)?.\*?\.php\?.\*?". - Preloading, add locking to prevent run multiple time in short period. - Standardize data size in binary rather than decimal. - DOCKET_CACHE_MAXTTL, only numbers between 86400 and 2419200 are accepted (1 day - 28 days). - DOCKET_CACHE_MAXSIZE, only numbers between 1000000 and 10485760 are accepted (1 MB - 10 MB). - DOCKET_CACHE_MAXSIZE_DISK, minimum 1048576 (1MB), default set to 500MB. - CLI, new command to run garbage collector "wp cache gc". = v20.08.11 (2020-09-17) - Fixed: Object cache stats, counting using ajax worker and only run on the overview page. - Fixed: Precaching, completely ignore query string and limit to 1000 urls. - Fixed: Caching, maxttl always set to 0 to avoid unexpected behavior from others plugin. - Fixed: Cronbot, bepart::is_ssl() check if site behind cloudflare/proxy. - Fixed: Missing wp_is_maintenance_mode(), wp < 5.5.1 - Added: Transient, Set the expiry time to 12 hours if expiration not set. - Added: Garbage collector, scheduled to every 5 minutes instead of 30 minutes. Enable cronbot service if your site wp-cron not running active. - Added: Object cache stats, enable/disable at configuration page. - Added: DOCKET_CACHE_MAXFILES constant, attempting to reduce cache file if bigger than default 5000 files. Only numbers between 200 and 200000 are accepted. = v20.08.10 (2020-09-17) - Fixed: cache file grow quickly if enable advanced post cache, maxttl should always set to 0. = v20.08.09 (2020-09-16) - Fixed: empty value return by constans->is_int, constans->is_array. = v20.08.08 (2020-09-16) - Fixed: cache stats, do collecting data in background to avoid lagging. - Fixed: cronbot, execute cron process directly without wp-cron.php, to avoid http connection error. - Added: cache stats options, Enable/disable object cache stats at Overview page. = v20.08.07 (2020-09-13) - Fixed: precaching, ignore query to avoid junk query string - Fixed: cronbot, add locking to avoid multiple send in short period - Fixed: cronbot, remove site url trailing slash - Fixed: cache stats overview = v20.08.06 (2020-09-07) - Fixed: precache “class not found” - Fixed: cronbot send site url instead of main site url if multisite - Fixed: cronbot recheck connection = v20.08.05 (2020-09-01) - Added: Cronbot Service - Fixed: precache overmissed - Fixed: for security reason, exclude user group from cache log if WP_DEBUG false - Fixed: cache_read() -> Registry::getClassReflector -> fatal error class not found - Fixed: PostCache::setup_hooks() -> array_shift error byreference - Fixed: get_proxy_ip() -> return bool instead of IP string - Fixed: ajax worker -> cache preload, cache flush, log flush = v20.08.04 (2020-08-18) - Added: Object Cache Precaching. - Added: Optimize Database Tables. - Added: Suspend WP Options Autoload. - Added: Post Missed Schedule Tweaks. - Added: OPcache reset. - Added: Cache/OPcache Statistics. - Fixed: Invalid variable at "maybe_recount_posts_for_term". - Fixed: Checking if file at cachedir_flush, cache_size. - Fixed: Cache flush and Drop-in installation, return false if dir/file is not writable. = v20.08.03 (2020-08-03) - Added: WordPres Translation Caching. - Added: Optimization for Term Count Queries. = v20.07.27 (2020-07-27) - Added: delete expired transients before replace dropin - Fixed: rarely condition, check wp function if exists before use at drop-in file to avoid fatal error, mostly if using apache mod_fcgid = v20.07.24 (2020-07-24) - Added: basic configuration interface. - Improved: cache read/write. = v20.07.20 (2020-07-20) - Cache performance, replace file_exists with is_file. = v20.07.19 (2020-07-19) - Automatically enable object cache when plugin activate. - Delay caching object when installing drop-in file. - Sorting option by first and last line at cache log page. - Prevent fatal error at drop-in file. = v20.07.17 (2020-07-17) - Updated: use shorter class name in cache file. - Updated: admin interface. add overlay when window unload to prevent click. - Updated: rename Files() class to Filesystem() since its more than files. - Added: View() class to handle admin page. - Added: log order and line for view log at admin page. - Fixed: add nonce to ajax for preload. = v20.07.16 (2020-07-16) - Fixed: misc tweaks, remove heartbeat, had issue with elementor. - Fixed: run opcache_flush when truncate cache files. - Fixed: cache path always suffix with docket-cache. - Fixed: add prefix NAWAWI at vendor namespace to avoid conflict with others plugins. - Added: compat.php to fix older cache files. - Updated: admin page. - Updated: dropin follow plugin version. = v20.07.14 (2020-07-14) - Fixed: wrong conditional -> sanitize_second. - Fixed: using class method instead of closure function. - Fixed: cache file, write to temp file first to avoid data half write. - Fixed: dont cache if size more than 1MB. - Fixed: null type data, set data to empty -> object-cache.php. - Fixed: chmod wrong file -> object-cache.php. - Fixed: file locking when read write cache file. - Fixed: only truncate when flush the cache files. - Fixed: DOCKET_CACHE_DISABLED doesnt work. - Added: tweaks for woocommerce. - Added: filtered_group to cache group with conditional. - Added: class Files to handle most of filesystem functions. - Added: garbage collector. - Added: DOCKET_CACHE_GC constant to disable garbage collector. - Added: DOCKET_CACHE_FLUSH_DELETE to enable remove rather than truncate when flush. - Updated: replace DOCKET_CACHE_DEBUG* to DOCKET_CACHE_LOG*. - Updated: using trigger_error instead of throw Exception when library not found -> object-cache.php. = v20.07.09 (2020-07-09) - Versions are as follows: Year.Month.Day of release. - Fixed: Invalid data -> docket_update, docket_get. - Added: opcache_invalidate after updating cache -> opcache_flush_file. - Added: performance tweaks -> register_tweaks. - Added: Advanced Post Cache from vip-go. = 1.0.0 (2020-07-08) - Initial release of the plugin.