X7ROOT File Manager
Current Path:
/home/katmhsmi/public_html/wp-content/plugins/w3-total-cache
home
/
katmhsmi
/
public_html
/
wp-content
/
plugins
/
w3-total-cache
/
📁
..
📄
Base_Page_Settings.php
(6.82 KB)
📄
BrowserCache_ConfigLabels.php
(10.36 KB)
📄
BrowserCache_Core.php
(3.19 KB)
📄
BrowserCache_Environment.php
(31.64 KB)
📄
BrowserCache_Environment_Apache.php
(3.38 KB)
📄
BrowserCache_Environment_LiteSpeed.php
(8.41 KB)
📄
BrowserCache_Environment_Nginx.php
(22.25 KB)
📄
BrowserCache_Page.php
(3.28 KB)
📄
BrowserCache_Page_View_QuickReference.php
(2.58 KB)
📄
BrowserCache_Page_View_SectionSecurity.php
(61.6 KB)
📄
BrowserCache_Plugin.php
(15.11 KB)
📄
BrowserCache_Plugin_Admin.php
(1.33 KB)
📄
Cache.php
(4.52 KB)
📄
CacheFlush.php
(7.88 KB)
📄
CacheFlush_Locally.php
(12.6 KB)
📄
CacheGroups_Plugin_Admin.php
(7.98 KB)
📄
CacheGroups_Plugin_Admin_View.js
(17.23 KB)
📄
CacheGroups_Plugin_Admin_View.php
(15.17 KB)
📄
Cache_Apc.php
(7.75 KB)
📄
Cache_Apcu.php
(7.77 KB)
📄
Cache_Base.php
(6.49 KB)
📄
Cache_Eaccelerator.php
(7.58 KB)
📄
Cache_File.php
(21.25 KB)
📄
Cache_File_Cleaner.php
(2.69 KB)
📄
Cache_File_Cleaner_Generic.php
(4.05 KB)
📄
Cache_File_Cleaner_Generic_HardDelete.php
(1.05 KB)
📄
Cache_File_Generic.php
(12.54 KB)
📄
Cache_Memcache.php
(14.32 KB)
📄
Cache_Memcached.php
(18.13 KB)
📄
Cache_Memcached_Stats.php
(3.52 KB)
📄
Cache_Nginx_Memcached.php
(13.55 KB)
📄
Cache_Redis.php
(13.31 KB)
📄
Cache_Wincache.php
(12.72 KB)
📄
Cache_Xcache.php
(11.55 KB)
📄
CdnEngine.php
(2.54 KB)
📄
CdnEngine_Azure.php
(12.65 KB)
📄
CdnEngine_Azure_MI.php
(12.28 KB)
📄
CdnEngine_Azure_MI_Utility.php
(18.19 KB)
📄
CdnEngine_Base.php
(16.37 KB)
📄
CdnEngine_CloudFront.php
(12.38 KB)
📄
CdnEngine_Ftp.php
(21.08 KB)
📄
CdnEngine_GoogleDrive.php
(24.14 KB)
📄
CdnEngine_Mirror.php
(2.46 KB)
📄
CdnEngine_Mirror_Akamai.php
(3.52 KB)
📄
CdnEngine_Mirror_Att.php
(293 B)
📄
CdnEngine_Mirror_BunnyCdn.php
(4.3 KB)
📄
CdnEngine_Mirror_CloudFront.php
(10.48 KB)
📄
CdnEngine_Mirror_Cotendo.php
(3.72 KB)
📄
CdnEngine_Mirror_Edgecast.php
(4.46 KB)
📄
CdnEngine_Mirror_RackSpaceCdn.php
(6.57 KB)
📄
CdnEngine_RackSpaceCloudFiles.php
(12.01 KB)
📄
CdnEngine_S3.php
(17.55 KB)
📄
CdnEngine_S3_Compatible.php
(10.36 KB)
📄
Cdn_AdminActions.php
(16.81 KB)
📄
Cdn_AdminNotes.php
(13.71 KB)
📄
Cdn_BunnyCdn_Api.php
(15.67 KB)
📄
Cdn_BunnyCdn_Page.php
(7.4 KB)
📄
Cdn_BunnyCdn_Page_View.js
(7.36 KB)
📄
Cdn_BunnyCdn_Page_View.php
(3.6 KB)
📄
Cdn_BunnyCdn_Page_View_Purge_Urls.php
(2.06 KB)
📄
Cdn_BunnyCdn_Popup.php
(10.83 KB)
📄
Cdn_BunnyCdn_Popup_View_Configured.php
(864 B)
📄
Cdn_BunnyCdn_Popup_View_Deauthorize.php
(2.15 KB)
📄
Cdn_BunnyCdn_Popup_View_Deauthorized.php
(1.54 KB)
📄
Cdn_BunnyCdn_Popup_View_Intro.php
(1.83 KB)
📄
Cdn_BunnyCdn_Popup_View_Pull_Zones.php
(5.16 KB)
📄
Cdn_BunnyCdn_Widget.php
(2.25 KB)
📄
Cdn_BunnyCdn_Widget_View.css
(1.26 KB)
📄
Cdn_BunnyCdn_Widget_View_Authorized.php
(1.9 KB)
📄
Cdn_BunnyCdn_Widget_View_Unauthorized.php
(6.1 KB)
📄
Cdn_CacheFlush.php
(2.64 KB)
📄
Cdn_ConfigLabels.php
(5.43 KB)
📄
Cdn_Core.php
(32.83 KB)
📄
Cdn_Core_Admin.php
(27.08 KB)
📄
Cdn_Environment.php
(19.29 KB)
📄
Cdn_Environment_LiteSpeed.php
(5.19 KB)
📄
Cdn_Environment_Nginx.php
(3.92 KB)
📄
Cdn_GeneralPage_View.php
(4.05 KB)
📄
Cdn_GoogleDrive_AdminActions.php
(3.53 KB)
📄
Cdn_GoogleDrive_Page.php
(2.03 KB)
📄
Cdn_GoogleDrive_Page_View.js
(488 B)
📄
Cdn_GoogleDrive_Page_View.php
(1.36 KB)
📄
Cdn_GoogleDrive_Popup_AuthReturn.php
(1.61 KB)
📄
Cdn_GoogleDrive_Popup_AuthReturn_View.php
(1.66 KB)
📄
Cdn_Page.php
(3.5 KB)
📄
Cdn_Page_View_Fsd_HeaderActions.php
(760 B)
📄
Cdn_Plugin.php
(43.77 KB)
📄
Cdn_Plugin_Admin.php
(7.3 KB)
📄
Cdn_RackSpaceCdn_AdminActions.php
(1.28 KB)
📄
Cdn_RackSpaceCdn_Page.php
(2.05 KB)
📄
Cdn_RackSpaceCdn_Page_View.js
(4.28 KB)
📄
Cdn_RackSpaceCdn_Page_View.php
(5.22 KB)
📄
Cdn_RackSpaceCdn_Popup.php
(21.49 KB)
📄
Cdn_RackSpaceCdn_Popup_View_ConfigureDomains.php
(1.87 KB)
📄
Cdn_RackSpaceCdn_Popup_View_Intro.php
(1.71 KB)
📄
Cdn_RackSpaceCdn_Popup_View_Regions.php
(1.76 KB)
📄
Cdn_RackSpaceCdn_Popup_View_Service_Actualize.php
(2.04 KB)
📄
Cdn_RackSpaceCdn_Popup_View_Service_Create.php
(4.41 KB)
📄
Cdn_RackSpaceCdn_Popup_View_Service_Created.php
(2.48 KB)
📄
Cdn_RackSpaceCdn_Popup_View_Services.php
(1.99 KB)
📄
Cdn_RackSpaceCloudFiles_Page.php
(1.67 KB)
📄
Cdn_RackSpaceCloudFiles_Page_View.js
(681 B)
📄
Cdn_RackSpaceCloudFiles_Page_View.php
(4.91 KB)
📄
Cdn_RackSpaceCloudFiles_Popup.php
(7.62 KB)
📄
Cdn_RackSpaceCloudFiles_Popup_View_Containers.php
(2.06 KB)
📄
Cdn_RackSpaceCloudFiles_Popup_View_Intro.php
(1.71 KB)
📄
Cdn_RackSpaceCloudFiles_Popup_View_Regions.php
(1.78 KB)
📄
Cdn_RackSpace_Api_CaCert-example.pem
(195.74 KB)
📄
Cdn_RackSpace_Api_Cdn.php
(10.72 KB)
📄
Cdn_RackSpace_Api_CloudFiles.php
(8.37 KB)
📄
Cdn_RackSpace_Api_CloudFilesCdn.php
(8.48 KB)
📄
Cdn_RackSpace_Api_Tokens.php
(6.78 KB)
📄
Cdn_Util.php
(6.73 KB)
📄
Cdnfsd_BunnyCdn_Engine.php
(2.03 KB)
📄
Cdnfsd_BunnyCdn_Page.php
(683 B)
📄
Cdnfsd_BunnyCdn_Page_View.js
(3.92 KB)
📄
Cdnfsd_BunnyCdn_Page_View.php
(3.72 KB)
📄
Cdnfsd_BunnyCdn_Popup.php
(10.39 KB)
📄
Cdnfsd_BunnyCdn_Popup_View_Configured.php
(1.3 KB)
📄
Cdnfsd_BunnyCdn_Popup_View_Deauthorize.php
(2.17 KB)
📄
Cdnfsd_BunnyCdn_Popup_View_Deauthorized.php
(1.56 KB)
📄
Cdnfsd_BunnyCdn_Popup_View_Intro.php
(1.85 KB)
📄
Cdnfsd_BunnyCdn_Popup_View_Pull_Zones.php
(5.57 KB)
📄
Cdnfsd_CacheFlush.php
(8.25 KB)
📄
Cdnfsd_CloudFront_Engine.php
(3.38 KB)
📄
Cdnfsd_CloudFront_Page.php
(741 B)
📄
Cdnfsd_CloudFront_Page_View.js
(2.73 KB)
📄
Cdnfsd_CloudFront_Page_View.php
(2.04 KB)
📄
Cdnfsd_CloudFront_Popup.php
(15.46 KB)
📄
Cdnfsd_CloudFront_Popup_View_Distribution.php
(3.34 KB)
📄
Cdnfsd_CloudFront_Popup_View_Distributions.php
(1.72 KB)
📄
Cdnfsd_CloudFront_Popup_View_Intro.php
(1.65 KB)
📄
Cdnfsd_CloudFront_Popup_View_Success.php
(976 B)
📄
Cdnfsd_Core.php
(1.96 KB)
📄
Cdnfsd_GeneralPage_View.php
(4.02 KB)
📄
Cdnfsd_Plugin.php
(1.98 KB)
📄
Cdnfsd_Plugin_Admin.php
(2.63 KB)
📄
Cdnfsd_TransparentCDN_Engine.php
(7.97 KB)
📄
Cdnfsd_TransparentCDN_Page.php
(1.36 KB)
📄
Cdnfsd_TransparentCDN_Page_View.js
(1.36 KB)
📄
Cdnfsd_TransparentCDN_Page_View.php
(2.33 KB)
📄
Cdnfsd_Util.php
(834 B)
📄
Cli.php
(17.33 KB)
📄
Config.php
(16.8 KB)
📄
ConfigCache.php
(4.67 KB)
📄
ConfigCompiler.php
(17.87 KB)
📄
ConfigDbStorage.php
(15.87 KB)
📄
ConfigKeys.php
(69.92 KB)
📄
ConfigSettingsTabs.php
(1.18 KB)
📄
ConfigSettingsTabsKeys.php
(19.62 KB)
📄
ConfigState.php
(6.08 KB)
📄
ConfigStateNote.php
(1.94 KB)
📄
ConfigUtil.php
(3.45 KB)
📄
DbCache_ConfigLabels.php
(1.22 KB)
📄
DbCache_Core.php
(2.05 KB)
📄
DbCache_Environment.php
(6.41 KB)
📄
DbCache_Page.php
(1.1 KB)
📄
DbCache_Plugin.php
(9.62 KB)
📄
DbCache_Plugin_Admin.php
(5.08 KB)
📄
DbCache_Wpdb.php
(1.63 KB)
📄
DbCache_WpdbBase.php
(346 B)
📄
DbCache_WpdbInjection.php
(7.15 KB)
📄
DbCache_WpdbInjection_QueryCaching.php
(26.05 KB)
📄
DbCache_WpdbLegacy.php
(22.42 KB)
📄
DbCache_WpdbNew.php
(22.24 KB)
📄
Dispatcher.php
(8.21 KB)
📄
Enterprise_CacheFlush_MakeSnsEvent.php
(7.47 KB)
📄
Enterprise_Dbcache_WpdbInjection_Cluster.php
(30.32 KB)
📄
Enterprise_SnsBase.php
(3.07 KB)
📄
Enterprise_SnsServer.php
(5.17 KB)
📄
Extension_AlwaysCached_AdminActions.php
(2.36 KB)
📄
Extension_AlwaysCached_Environment.php
(2.87 KB)
📄
Extension_AlwaysCached_Page.php
(4 KB)
📄
Extension_AlwaysCached_Page_Queue_View.php
(3.14 KB)
📄
Extension_AlwaysCached_Page_View.js
(7.26 KB)
📄
Extension_AlwaysCached_Page_View.php
(2.51 KB)
📄
Extension_AlwaysCached_Page_View_BoxCron.php
(2.92 KB)
📄
Extension_AlwaysCached_Page_View_BoxFlushAll.php
(3.28 KB)
📄
Extension_AlwaysCached_Page_View_BoxQueue.php
(4.35 KB)
📄
Extension_AlwaysCached_Page_View_Exclusions.php
(1.11 KB)
📄
Extension_AlwaysCached_Plugin.php
(12.1 KB)
📄
Extension_AlwaysCached_Plugin_Admin.php
(3.06 KB)
📄
Extension_AlwaysCached_Queue.php
(10.22 KB)
📄
Extension_AlwaysCached_Worker.php
(2.93 KB)
📄
Extension_Amp_Page_View.php
(1.26 KB)
📄
Extension_Amp_Plugin.php
(11.1 KB)
📄
Extension_Amp_Plugin_Admin.php
(2.19 KB)
📄
Extension_CloudFlare_AdminActions.php
(1.57 KB)
📄
Extension_CloudFlare_Api.php
(12.19 KB)
📄
Extension_CloudFlare_Cdn_Page_View.php
(625 B)
📄
Extension_CloudFlare_GeneralPage_View.php
(3.05 KB)
📄
Extension_CloudFlare_Page.php
(4.32 KB)
📄
Extension_CloudFlare_Page_View.js
(1.15 KB)
📄
Extension_CloudFlare_Page_View.php
(27.38 KB)
📄
Extension_CloudFlare_Plugin.php
(15.19 KB)
📄
Extension_CloudFlare_Plugin_Admin.php
(14.13 KB)
📄
Extension_CloudFlare_Popup.php
(4.21 KB)
📄
Extension_CloudFlare_Popup_View_Intro.php
(1.75 KB)
📄
Extension_CloudFlare_Popup_View_Zones.php
(2.09 KB)
📄
Extension_CloudFlare_SettingsForUi.php
(4.84 KB)
📄
Extension_CloudFlare_View_Dashboard.js
(730 B)
📄
Extension_CloudFlare_Widget.php
(4.63 KB)
📄
Extension_CloudFlare_Widget_Logo.png
(6.96 KB)
📄
Extension_CloudFlare_Widget_View.css
(683 B)
📄
Extension_CloudFlare_Widget_View.php
(1.65 KB)
📄
Extension_FragmentCache_Api.php
(7.01 KB)
📄
Extension_FragmentCache_Core.php
(3.38 KB)
📄
Extension_FragmentCache_Environment.php
(1.41 KB)
📄
Extension_FragmentCache_GeneralPage.php
(1.27 KB)
📄
Extension_FragmentCache_GeneralPage_View.php
(2.47 KB)
📄
Extension_FragmentCache_Page.php
(697 B)
📄
Extension_FragmentCache_Page_View.php
(5.25 KB)
📄
Extension_FragmentCache_Plugin.php
(8.21 KB)
📄
Extension_FragmentCache_Plugin_Admin.php
(8.91 KB)
📄
Extension_FragmentCache_WpObjectCache.php
(16.92 KB)
📄
Extension_Genesis_Page.php
(409 B)
📄
Extension_Genesis_Page_View.php
(11.11 KB)
📄
Extension_Genesis_Plugin.php
(14.46 KB)
📄
Extension_Genesis_Plugin_Admin.php
(5.45 KB)
📄
Extension_ImageService_Api.php
(11.99 KB)
📄
Extension_ImageService_Cron.php
(6.49 KB)
📄
Extension_ImageService_Environment.php
(4.6 KB)
📄
Extension_ImageService_Page_View.php
(8.41 KB)
📄
Extension_ImageService_Plugin.php
(1.44 KB)
📄
Extension_ImageService_Plugin_Admin.css
(2.34 KB)
📄
Extension_ImageService_Plugin_Admin.js
(17.37 KB)
📄
Extension_ImageService_Plugin_Admin.php
(42.7 KB)
📄
Extension_ImageService_Widget.js
(6.17 KB)
📄
Extension_ImageService_Widget.php
(3.34 KB)
📄
Extension_ImageService_Widget_View.php
(1.59 KB)
📄
Extension_NewRelic_AdminActions.php
(1.11 KB)
📄
Extension_NewRelic_AdminNotes.php
(2.11 KB)
📄
Extension_NewRelic_Api.php
(4.03 KB)
📄
Extension_NewRelic_Core.php
(1.33 KB)
📄
Extension_NewRelic_GeneralPage.php
(1.53 KB)
📄
Extension_NewRelic_GeneralPage_View.php
(2.84 KB)
📄
Extension_NewRelic_Page.php
(1.35 KB)
📄
Extension_NewRelic_Page_View_Apm.php
(12.87 KB)
📄
Extension_NewRelic_Plugin.php
(7.09 KB)
📄
Extension_NewRelic_Plugin_Admin.php
(8.08 KB)
📄
Extension_NewRelic_Popup.php
(3.96 KB)
📄
Extension_NewRelic_Popup_View.js
(1.72 KB)
📄
Extension_NewRelic_Popup_View_Intro.php
(1.37 KB)
📄
Extension_NewRelic_Popup_View_ListApplications.php
(1.93 KB)
📄
Extension_NewRelic_Service.php
(21.65 KB)
📄
Extension_NewRelic_Widget.php
(10.48 KB)
📄
Extension_NewRelic_Widget_View.css
(1.37 KB)
📄
Extension_NewRelic_Widget_View.js
(2.42 KB)
📄
Extension_NewRelic_Widget_View_Apm.php
(2.91 KB)
📄
Extension_NewRelic_Widget_View_Browser.php
(436 B)
📄
Extension_NewRelic_Widget_View_NotConfigured.php
(233 B)
📄
Extension_Swarmify_AdminActions.php
(793 B)
📄
Extension_Swarmify_Core.php
(748 B)
📄
Extension_Swarmify_Page.php
(708 B)
📄
Extension_Swarmify_Page_View.php
(2.78 KB)
📄
Extension_Swarmify_Plugin.php
(4.63 KB)
📄
Extension_Swarmify_Plugin_Admin.php
(2.63 KB)
📄
Extension_WordPressSeo_Plugin.php
(1.39 KB)
📄
Extension_WordPressSeo_Plugin_Admin.php
(5.25 KB)
📄
Extension_Wpml_Plugin.php
(1.34 KB)
📄
Extension_Wpml_Plugin_Admin.php
(7.45 KB)
📄
Extensions_AdminActions.php
(943 B)
📄
Extensions_Page.php
(4.06 KB)
📄
Extensions_Plugin_Admin.php
(9.66 KB)
📄
Extensions_Util.php
(4.43 KB)
📄
FeatureShowcase_Plugin_Admin.php
(29.1 KB)
📄
FeatureShowcase_Plugin_Admin_View.php
(2.82 KB)
📄
Generic_AdminActions_Config.php
(6.61 KB)
📄
Generic_AdminActions_Default.php
(21.84 KB)
📄
Generic_AdminActions_Flush.php
(10.57 KB)
📄
Generic_AdminActions_Test.php
(6.15 KB)
📄
Generic_AdminNotes.php
(13.88 KB)
📄
Generic_ConfigLabels.php
(2.33 KB)
📄
Generic_Environment.php
(6.67 KB)
📄
Generic_Faq.php
(2.27 KB)
📄
Generic_GeneralPage_View_ShowEdge.js
(314 B)
📄
Generic_Page_About.php
(503 B)
📄
Generic_Page_Dashboard.php
(1.66 KB)
📄
Generic_Page_Dashboard_View.css
(6.34 KB)
📄
Generic_Page_General.php
(2.88 KB)
📄
Generic_Page_Install.php
(913 B)
📄
Generic_Page_PurgeLog.php
(2.81 KB)
📄
Generic_Page_PurgeLog_View.php
(2.97 KB)
📄
Generic_Plugin.php
(23.04 KB)
📄
Generic_Plugin_Admin.php
(48.87 KB)
📄
Generic_Plugin_AdminCompatibility.php
(3.98 KB)
📄
Generic_Plugin_AdminNotices.css
(188 B)
📄
Generic_Plugin_AdminNotices.js
(1.66 KB)
📄
Generic_Plugin_AdminNotices.php
(12.12 KB)
📄
Generic_Plugin_AdminRowActions.php
(2.43 KB)
📄
Generic_Plugin_Admin_View_Faq.php
(1007 B)
📄
Generic_Plugin_Survey.php
(4.8 KB)
📄
Generic_WidgetAccount.php
(1.05 KB)
📄
Generic_WidgetAccount_View.php
(2.1 KB)
📄
Generic_WidgetBoldGrid.php
(1.97 KB)
📄
Generic_WidgetBoldGrid_AdminActions.php
(912 B)
📄
Generic_WidgetBoldGrid_Logo.svg
(4.28 KB)
📄
Generic_WidgetBoldGrid_View.js
(625 B)
📄
Generic_WidgetBoldGrid_View.php
(872 B)
📄
Generic_WidgetPartners.php
(1.08 KB)
📄
Generic_WidgetPartners_View.php
(1.66 KB)
📄
Generic_WidgetServices.php
(1.66 KB)
📄
Generic_WidgetServices_View.php
(501 B)
📄
Generic_WidgetSettings.php
(1.05 KB)
📄
Generic_WidgetSettings_View.php
(3.37 KB)
📄
Generic_WidgetSpreadTheWord.js
(879 B)
📄
Generic_WidgetSpreadTheWord_Plugin.php
(2.03 KB)
📄
Generic_WidgetSpreadTheWord_View.php
(579 B)
📄
Generic_WidgetStats.js
(3.3 KB)
📄
Generic_WidgetStats.php
(4.84 KB)
📄
LICENSE
(17.67 KB)
📄
Licensing_AdminActions.php
(4.22 KB)
📄
Licensing_Core.php
(6.28 KB)
📄
Licensing_Plugin_Admin.php
(16.65 KB)
📄
Minify_AutoCss.php
(8.83 KB)
📄
Minify_AutoJs.php
(9.68 KB)
📄
Minify_ConfigLabels.php
(8.66 KB)
📄
Minify_ContentMinifier.php
(10.24 KB)
📄
Minify_Core.php
(7.42 KB)
📄
Minify_Environment.php
(26.91 KB)
📄
Minify_Environment_LiteSpeed.php
(977 B)
📄
Minify_Extract.php
(2.8 KB)
📄
Minify_GeneralPage_View_ShowHelp.js
(1.12 KB)
📄
Minify_GeneralPage_View_ShowHelpForce.js
(51 B)
📄
Minify_HelpPopup_View.php
(5.01 KB)
📄
Minify_MinifiedFileRequestHandler.php
(32.87 KB)
📄
Minify_Page.php
(18.45 KB)
📄
Minify_Plugin.php
(41.75 KB)
📄
Minify_Plugin_Admin.php
(11.97 KB)
📄
Mobile_Base.php
(6.85 KB)
📄
Mobile_Redirect.php
(1.85 KB)
📄
Mobile_Referrer.php
(2.4 KB)
📄
Mobile_UserAgent.php
(971 B)
📄
ModuleStatus.php
(4.37 KB)
📄
ObjectCache_ConfigLabels.php
(1.25 KB)
📄
ObjectCache_DiskPopup.js
(2.41 KB)
📄
ObjectCache_DiskPopup_View.php
(1.77 KB)
📄
ObjectCache_Environment.php
(6.79 KB)
📄
ObjectCache_Page.php
(560 B)
📄
ObjectCache_Page_View_PurgeLog.php
(1.01 KB)
📄
ObjectCache_Plugin.php
(6.54 KB)
📄
ObjectCache_Plugin_Admin.php
(6.97 KB)
📄
ObjectCache_WpObjectCache.php
(10.17 KB)
📄
ObjectCache_WpObjectCache_Regular.php
(34.11 KB)
📄
PageSpeed_Api.php
(12.16 KB)
📄
PageSpeed_Data.php
(37.19 KB)
📄
PageSpeed_Instructions.php
(43.29 KB)
📄
PageSpeed_Page.php
(8.76 KB)
📄
PageSpeed_Page_View.css
(6.21 KB)
📄
PageSpeed_Page_View.js
(9.48 KB)
📄
PageSpeed_Page_View.php
(2.08 KB)
📄
PageSpeed_Page_View_FromAPI.php
(7.65 KB)
📄
PageSpeed_Widget.php
(7.03 KB)
📄
PageSpeed_Widget_View.css
(2.62 KB)
📄
PageSpeed_Widget_View.js
(2.08 KB)
📄
PageSpeed_Widget_View.php
(1.09 KB)
📄
PageSpeed_Widget_View_FromApi.php
(3.71 KB)
📄
PgCache_ConfigLabels.php
(5.82 KB)
📄
PgCache_ContentGrabber.php
(70.95 KB)
📄
PgCache_Environment.php
(51.72 KB)
📄
PgCache_Flush.php
(16.32 KB)
📄
PgCache_Page.php
(1.6 KB)
📄
PgCache_Page_View.js
(553 B)
📄
PgCache_Plugin.php
(14.22 KB)
📄
PgCache_Plugin_Admin.php
(14.49 KB)
📄
PgCache_QsExempts.php
(1.88 KB)
📄
Root_AdminActions.php
(3.05 KB)
📄
Root_AdminActivation.php
(6.52 KB)
📄
Root_AdminMenu.php
(8.37 KB)
📄
Root_Environment.php
(7.81 KB)
📄
Root_Loader.php
(6.94 KB)
📄
SetupGuide_Plugin_Admin.php
(48.8 KB)
📄
Support_AdminActions.php
(6.14 KB)
📄
Support_Page.php
(3.08 KB)
📄
Support_Page_View_DoneContent.php
(353 B)
📄
Support_Page_View_PageContent.php
(1.39 KB)
📄
SystemOpCache_AdminActions.php
(1.18 KB)
📄
SystemOpCache_Core.php
(2.48 KB)
📄
SystemOpCache_GeneralPage_View.php
(2.27 KB)
📄
SystemOpCache_Plugin_Admin.php
(3.3 KB)
📄
UsageStatistics_AdminActions.php
(1.14 KB)
📄
UsageStatistics_Core.php
(3.39 KB)
📄
UsageStatistics_GeneralPage.php
(1.6 KB)
📄
UsageStatistics_GeneralPage_View.php
(6.18 KB)
📄
UsageStatistics_Page.php
(8.4 KB)
📄
UsageStatistics_Page_DbRequests_View.php
(1.79 KB)
📄
UsageStatistics_Page_ObjectCacheLog_View.php
(1.97 KB)
📄
UsageStatistics_Page_PageCacheRequests_View.php
(1.86 KB)
📄
UsageStatistics_Page_View.css
(1.68 KB)
📄
UsageStatistics_Page_View.js
(17.42 KB)
📄
UsageStatistics_Page_View.php
(17.13 KB)
📄
UsageStatistics_Page_View_Ad.php
(688 B)
📄
UsageStatistics_Page_View_Disabled.php
(610 B)
📄
UsageStatistics_Page_View_Free.php
(635 B)
📄
UsageStatistics_Page_View_NoDebugMode.php
(615 B)
📄
UsageStatistics_Plugin.php
(2.89 KB)
📄
UsageStatistics_Plugin_Admin.php
(5.65 KB)
📄
UsageStatistics_Source_AccessLog.php
(17.47 KB)
📄
UsageStatistics_Source_DbQueriesLog.php
(6.04 KB)
📄
UsageStatistics_Source_ObjectCacheLog.php
(5.57 KB)
📄
UsageStatistics_Source_PageCacheLog.php
(6.11 KB)
📄
UsageStatistics_Source_Wpdb.php
(3.49 KB)
📄
UsageStatistics_Sources.php
(5.41 KB)
📄
UsageStatistics_Sources_Apc.php
(3.39 KB)
📄
UsageStatistics_Sources_Memcached.php
(4.58 KB)
📄
UsageStatistics_Sources_Redis.php
(4.69 KB)
📄
UsageStatistics_StorageReader.php
(2.81 KB)
📄
UsageStatistics_StorageWriter.php
(14.38 KB)
📄
UserExperience_DeferScripts_Extension.php
(7.04 KB)
📄
UserExperience_DeferScripts_Mutator.php
(2.78 KB)
📄
UserExperience_DeferScripts_Page_View.php
(3.91 KB)
📄
UserExperience_DeferScripts_Script.js
(373 B)
📄
UserExperience_Emoji_Extension.php
(3.04 KB)
📄
UserExperience_GeneralPage.php
(1.72 KB)
📄
UserExperience_GeneralPage_View.php
(8.21 KB)
📄
UserExperience_LazyLoad_GoogleMaps_GoogleMapsEasy.php
(3.89 KB)
📄
UserExperience_LazyLoad_GoogleMaps_WPGoogleMapPlugin.php
(2.14 KB)
📄
UserExperience_LazyLoad_GoogleMaps_WPGoogleMaps.php
(3.94 KB)
📄
UserExperience_LazyLoad_Mutator.php
(9.18 KB)
📄
UserExperience_LazyLoad_Mutator_Picture.php
(2.52 KB)
📄
UserExperience_LazyLoad_Mutator_Unmutable.php
(2.88 KB)
📄
UserExperience_LazyLoad_Page_View.php
(6.46 KB)
📄
UserExperience_LazyLoad_Plugin.php
(9.17 KB)
📄
UserExperience_OEmbed_Extension.php
(795 B)
📄
UserExperience_Page.php
(527 B)
📄
UserExperience_Page_View.php
(695 B)
📄
UserExperience_Plugin_Admin.php
(3.49 KB)
📄
UserExperience_Plugin_Jquery.php
(1.4 KB)
📄
UserExperience_Preload_Requests_Extension.php
(6.15 KB)
📄
UserExperience_Preload_Requests_Page_View.php
(8.18 KB)
📄
UserExperience_Remove_CssJs_Extension.php
(6.79 KB)
📄
UserExperience_Remove_CssJs_Mutator.php
(4.45 KB)
📄
UserExperience_Remove_CssJs_Page_View.js
(10.2 KB)
📄
UserExperience_Remove_CssJs_Page_View.php
(14.59 KB)
📄
Util_Activation.php
(9.89 KB)
📄
Util_Admin.php
(25.03 KB)
📄
Util_AttachToActions.php
(7.65 KB)
📄
Util_Bus.php
(832 B)
📄
Util_ConfigLabel.php
(1.57 KB)
📄
Util_Content.php
(3.03 KB)
📄
Util_Debug.php
(6.38 KB)
📄
Util_DebugPurgeLog_Reader.php
(3.36 KB)
📄
Util_Environment.php
(42.46 KB)
📄
Util_Environment_Exception.php
(719 B)
📄
Util_Environment_Exceptions.php
(1.42 KB)
📄
Util_File.php
(13.11 KB)
📄
Util_Http.php
(5.87 KB)
📄
Util_Installed.php
(4.24 KB)
📄
Util_Mime.php
(2.9 KB)
📄
Util_PageSpeed.php
(33.92 KB)
📄
Util_PageUrls.php
(32.57 KB)
📄
Util_Request.php
(3.52 KB)
📄
Util_Rule.php
(13.83 KB)
📄
Util_Theme.php
(3.87 KB)
📄
Util_Ui.php
(83.11 KB)
📄
Util_UsageStatistics.php
(13.6 KB)
📄
Util_Widget.php
(7.88 KB)
📄
Util_WpFile.php
(16.48 KB)
📄
Util_WpFile_FilesystemChmodException.php
(1.66 KB)
📄
Util_WpFile_FilesystemCopyException.php
(1.79 KB)
📄
Util_WpFile_FilesystemMkdirException.php
(1.14 KB)
📄
Util_WpFile_FilesystemModifyException.php
(2.35 KB)
📄
Util_WpFile_FilesystemOperationException.php
(1.29 KB)
📄
Util_WpFile_FilesystemRmException.php
(1.14 KB)
📄
Util_WpFile_FilesystemRmdirException.php
(1.19 KB)
📄
Util_WpFile_FilesystemWriteException.php
(1.57 KB)
📄
Util_WpmuBlogmap.php
(8.06 KB)
📄
Varnish_Flush.php
(18.57 KB)
📄
Varnish_Plugin.php
(3.2 KB)
📁
extension-example
📁
inc
📄
index.html
(0 B)
📁
ini
📁
languages
📁
lib
📄
press.txt
(45.78 KB)
📁
pub
📄
readme.txt
(76.49 KB)
📁
vendor
📄
w3-total-cache-api.php
(22.29 KB)
📄
w3-total-cache-old-php.php
(1.25 KB)
📄
w3-total-cache.php
(2.83 KB)
📁
wp-content
Editing: DbCache_WpdbInjection_QueryCaching.php
<?php /** * File: DbCache_WpdbInjection_QueryCaching.php * * @package W3TC */ namespace W3TC; /** * Class: DbCache_WpdbInjection_QueryCaching * * phpcs:disable PSR2.Classes.PropertyDeclaration.Underscore * phpcs:disable PSR2.Methods.MethodDeclaration.Underscore * phpcs:disable WordPress.WP.AlternativeFunctions */ class DbCache_WpdbInjection_QueryCaching extends DbCache_WpdbInjection { /** * Queries total. * * @var int */ public $query_total = 0; /** * Query cache hits. * * @var int */ public $query_hits = 0; /** * Query cache misses. * * @var int */ public $query_misses = 0; /** * Time total taken by queries, in microsecs. * * @var int */ public $time_total = 0; /** * Config. * * @var Config */ public $_config = null; /** * Lifetime. * * @var int */ public $_lifetime = null; /** * Number of cache flushes during http request processing. * * @var int */ private $cache_flushes = 0; /** * Request-global cache reject reason. * * @var string */ private $cache_reject_reason = null; /** * Request-global check reject scope. * * @var bool */ private $cache_reject_request_wide = false; /** * Debug flag. * * @var bool */ private $debug = false; /** * Reject log flag. * * @var bool */ private $reject_logged = false; /** * Log filehandle flag. * * @var bool */ private $log_filehandle = false; /** * Reject constants flag. * * @var bool */ private $reject_constants = false; /** * Use filters flag. * * @var bool */ private $use_filters = false; /** * Result of check if caching is possible at the level of current http request. * * @var bool */ private $can_cache_once_per_request_result = null; /** * Constructor method to initialize the object with configuration values. * * @return void */ public function __construct() { $c = Dispatcher::config(); $this->_config = $c; $this->_lifetime = $c->get_integer( 'dbcache.lifetime' ); $this->debug = $c->get_boolean( 'dbcache.debug' ); $this->reject_logged = $c->get_boolean( 'dbcache.reject.logged' ); $this->reject_constants = $c->get_array( 'dbcache.reject.constants' ); $this->use_filters = $this->_config->get_boolean( 'dbcache.use_filters' ); } /** * Handles SQL queries and caches results when applicable. * * @param string $query SQL query string to execute. * * @return mixed Query result, either from cache or execution. */ public function query( $query ) { if ( ! $this->wpdb_mixin->ready ) { return $this->next_injection->query( $query ); } $reject_reason = ''; $is_cache_hit = false; $data = false; $time_total = 0; $group = ''; $flush_after_query = false; ++$this->query_total; $caching = $this->_can_cache( $query, $reject_reason ); if ( preg_match( '~^\s*start transaction\b~is', $query ) ) { $this->cache_reject_reason = 'transaction'; $reject_reason = $this->cache_reject_reason; $caching = false; } if ( preg_match( '~^\s*insert\b|^\s*delete\b|^\s*update\b|^\s*replace\b|^\s*commit\b|^\s*truncate\b|^\s*drop\b|^\s*create\b~is', $query ) ) { $this->cache_reject_reason = 'modification query'; $reject_reason = $this->cache_reject_reason; $caching = false; $flush_after_query = true; } // Reject if this is a WP-CLI call, dbcache engine is set to Disk, and is disabled for WP-CLI. if ( $this->is_wpcli_disk() ) { $this->cache_reject_reason = 'dbcache set to disk and disabled for wp-cli'; $reject_reason = $this->cache_reject_reason; $caching = false; } if ( $this->use_filters && function_exists( 'apply_filters' ) ) { $reject_reason = apply_filters( 'w3tc_dbcache_can_cache_sql', ( $caching ? '' : $reject_reason ), $query ); $caching = empty( $reject_reason ); } if ( $caching ) { $this->wpdb_mixin->timer_start(); $cache = $this->_get_cache(); $group = $this->_get_group( $query ); $data = $cache->get( md5( $query ), $group ); $time_total = $this->wpdb_mixin->timer_stop(); } if ( is_array( $data ) ) { $is_cache_hit = true; ++$this->query_hits; $this->wpdb_mixin->last_error = $data['last_error']; $this->wpdb_mixin->last_query = $data['last_query']; $this->wpdb_mixin->last_result = $data['last_result']; $this->wpdb_mixin->col_info = $data['col_info']; $this->wpdb_mixin->num_rows = $data['num_rows']; $return_val = $data['return_val']; } else { ++$this->query_misses; $this->wpdb_mixin->timer_start(); $return_val = $this->next_injection->query( $query ); $time_total = $this->wpdb_mixin->timer_stop(); if ( $flush_after_query ) { $group = $this->_get_group( $query ); $this->_flush_cache_for_sql_group( $group, array( 'modification_query' => $query ) ); } if ( $caching ) { $data = array( 'last_error' => $this->wpdb_mixin->last_error, 'last_query' => $this->wpdb_mixin->last_query, 'last_result' => $this->wpdb_mixin->last_result, 'col_info' => $this->wpdb_mixin->col_info, 'num_rows' => $this->wpdb_mixin->num_rows, 'return_val' => $return_val, ); $cache = $this->_get_cache(); $group = $this->_get_group( $query ); $filter_data = array( 'query' => $query, 'group' => $group, 'content' => $data, 'expiration' => $this->_lifetime, ); if ( $this->use_filters && function_exists( 'apply_filters' ) ) { $filter_data = apply_filters( 'w3tc_dbcache_cache_set', $filter_data ); } $cache->set( md5( $filter_data['query'] ), $filter_data['content'], $filter_data['expiration'], $filter_data['group'] ); } } if ( $this->debug ) { $this->log_query( array( gmdate( 'r' ), strtr( isset( $_SERVER['REQUEST_URI'] ) ? filter_var( stripslashes( $_SERVER['REQUEST_URI'] ), FILTER_SANITIZE_URL ) : '', // phpcs:ignore WordPress.Security.ValidatedSanitizedInput "<>\r\n", '.. ' ), strtr( $query, "<>\r\n", '.. ' ), // query. (int) ( $time_total * 1000000 ), // time_total in seconds. $reject_reason, // reason. $is_cache_hit, // cached. ( $data ? strlen( serialize( $data ) ) : 0 ), // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.serialize_serialize -- data size strtr( $group, "<>\r\n", '.. ' ), // group. ) ); } $this->time_total += $time_total; return $return_val; } /** * Escapes data for safe SQL usage. * * @param mixed $data Data to escape. * * @return mixed Escaped data. */ public function _escape( $data ) { return $this->next_injection->_escape( $data ); } /** * Prepares an SQL query for execution with arguments. * * @param string $query SQL query string. * @param array $args Array of arguments for the query. * * @return string Prepared SQL query. */ public function prepare( $query, $args ) { return $this->next_injection->prepare( $query, $args ); } /** * Initializes the database injection. * * @return mixed */ public function initialize() { return $this->next_injection->initialize(); } /** * Inserts data into a database table. * * @param string $table The table to insert data into. * @param array $data Data to insert into the table. * @param array $format Optional format for the data. * * @return bool True on success, false on failure. */ public function insert( $table, $data, $format = null ) { return $this->next_injection->insert( $table, $data, $format ); } /** * Replaces data in a database table. * * @param string $table The table to replace data in. * @param array $data Data to replace in the table. * @param array $format Optional format for the data. * * @return bool True on success, false on failure. */ public function replace( $table, $data, $format = null ) { $group = $this->_get_group( $table ); $this->_flush_cache_for_sql_group( $group, array( 'wpdb_replace' => $table ) ); return $this->next_injection->replace( $table, $data, $format ); } /** * Updates data in a database table. * * @param string $table The table to update data in. * @param array $data Data to update in the table. * @param array $where Conditions for the update. * @param array $format Optional format for the data. * @param array $where_format Optional format for the conditions. * * @return bool True on success, false on failure. */ public function update( $table, $data, $where, $format = null, $where_format = null ) { $group = $this->_get_group( $table ); $this->_flush_cache_for_sql_group( $group, array( 'wpdb_update' => $table ) ); return $this->next_injection->update( $table, $data, $where, $format, $where_format ); } /** * Deletes data from a database table. * * @param string $table The table to delete data from. * @param array $where Conditions for the deletion. * @param array $where_format Optional format for the conditions. * * @return bool True on success, false on failure. */ public function delete( $table, $where, $where_format = null ) { $group = $this->_get_group( $table ); $this->_flush_cache_for_sql_group( $group, array( 'wpdb_delete' => $table ) ); return $this->next_injection->delete( $table, $where, $where_format ); } /** * Flushes the cache based on specified extras. * * @param array $extras Optional extra parameters for cache flushing. * * @return bool True on success, false on failure. */ public function flush_cache( $extras = array() ) { return $this->_flush_cache_for_sql_group( 'remaining', $extras ); } /** * Flushed the cache for a specific SQL query group. * * @param string $group The group to flush the cache for. * @param array $extras Optional extra parameters for cache flushing. * * @return bool True on success, false on failure. */ private function _flush_cache_for_sql_group( $group, $extras = array() ) { $this->wpdb_mixin->timer_start(); if ( $this->debug ) { $filename = Util_Debug::log( 'dbcache', 'flushing based on sqlquery group ' . $group . ' with extras ' . wp_json_encode( $extras ) ); } if ( $this->_config->get_boolean( 'dbcache.debug_purge' ) ) { Util_Debug::log_purge( 'dbcache', '_flush_cache_for_sql_group', array( $group, $extras ) ); } $cache = $this->_get_cache(); $flush_groups = $this->_get_flush_groups( $group, $extras ); $v = true; ++$this->cache_flushes; foreach ( $flush_groups as $f_group => $nothing ) { if ( $this->debug ) { $filename = Util_Debug::log( 'dbcache', 'flush group ' . $f_group ); } $v &= $cache->flush( $f_group ); } $this->time_total += $this->wpdb_mixin->timer_stop(); return $v; } /** * Retrieves the cache instance. * * @return object Cache instance. */ public function _get_cache() { static $cache = array(); if ( ! isset( $cache[0] ) ) { $engine = $this->_config->get_string( 'dbcache.engine' ); switch ( $engine ) { case 'memcached': $engine_config = array( 'servers' => $this->_config->get_array( 'dbcache.memcached.servers' ), 'persistent' => $this->_config->get_boolean( 'dbcache.memcached.persistent' ), 'aws_autodiscovery' => $this->_config->get_boolean( 'dbcache.memcached.aws_autodiscovery' ), 'username' => $this->_config->get_string( 'dbcache.memcached.username' ), 'password' => $this->_config->get_string( 'dbcache.memcached.password' ), 'binary_protocol' => $this->_config->get_boolean( 'dbcache.memcached.binary_protocol' ), ); break; case 'redis': $engine_config = array( 'servers' => $this->_config->get_array( 'dbcache.redis.servers' ), 'verify_tls_certificates' => $this->_config->get_boolean( 'dbcache.redis.verify_tls_certificates' ), 'persistent' => $this->_config->get_boolean( 'dbcache.redis.persistent' ), 'timeout' => $this->_config->get_integer( 'dbcache.redis.timeout' ), 'retry_interval' => $this->_config->get_integer( 'dbcache.redis.retry_interval' ), 'read_timeout' => $this->_config->get_integer( 'dbcache.redis.read_timeout' ), 'dbid' => $this->_config->get_integer( 'dbcache.redis.dbid' ), 'password' => $this->_config->get_string( 'dbcache.redis.password' ), ); break; case 'file': $engine_config = array( 'use_wp_hash' => true, 'section' => 'db', 'locking' => $this->_config->get_boolean( 'dbcache.file.locking' ), 'flush_timelimit' => $this->_config->get_integer( 'timelimit.cache_flush' ), ); break; default: $engine_config = array(); } $engine_config['module'] = 'dbcache'; $engine_config['host'] = Util_Environment::host(); $engine_config['instance_id'] = Util_Environment::instance_id(); $cache[0] = Cache::instance( $engine, $engine_config ); } return $cache[0]; } /** * Determines if a query can be cached. * * @param string $sql SQL query string. * @param string $cache_reject_reason Reason for rejecting cache (if any). * * @return bool True if the query can be cached, false otherwise. */ public function _can_cache( $sql, &$cache_reject_reason ) { /** * Skip if request-wide reject reason specified. * Note - as a result requedt-wide checks are done only once per request. */ if ( ! is_null( $this->cache_reject_reason ) ) { $cache_reject_reason = $this->cache_reject_reason; $this->cache_reject_request_wide = true; return false; } /** * Do once-per-request check if needed. */ if ( is_null( $this->can_cache_once_per_request_result ) ) { $this->can_cache_once_per_request_result = $this->_can_cache_once_per_request(); if ( ! $this->can_cache_once_per_request_result ) { $this->cache_reject_request_wide = true; return false; } } /** * Check for constants. */ foreach ( $this->reject_constants as $name ) { if ( defined( $name ) && constant( $name ) ) { $this->cache_reject_reason = $name . ' constant defined'; $cache_reject_reason = $this->cache_reject_reason; return false; } } /** * Check for AJAX requests. */ $ajax_skip = false; if ( defined( 'DOING_AJAX' ) ) { $http_referer = isset( $_SERVER['HTTP_REFERER'] ) ? filter_var( stripslashes( $_SERVER['HTTP_REFERER'] ), FILTER_SANITIZE_URL ) : ''; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput // wp_admin is always defined for ajax requests, check by referrer. if ( strpos( $http_referer, '/wp-admin/' ) === false ) { $ajax_skip = true; } } /** * Skip if admin. */ if ( defined( 'WP_ADMIN' ) && ! $ajax_skip ) { $this->cache_reject_reason = 'WP_ADMIN'; $cache_reject_reason = $this->cache_reject_reason; return false; } /** * Skip if SQL is rejected. */ if ( ! $this->_check_sql( $sql ) ) { $cache_reject_reason = 'query not cacheable'; return false; } /** * Skip if user is logged in. */ if ( $this->reject_logged && ! $this->_check_logged_in() ) { $this->cache_reject_reason = 'user.logged_in'; $cache_reject_reason = $this->cache_reject_reason; return false; } return true; } /** * Checks conditions once per request if caching can be performed. * * @return bool True if caching is allowed, false otherwise. */ public function _can_cache_once_per_request() { /** * Skip if disabled */ if ( ! $this->_config->get_boolean( 'dbcache.enabled' ) ) { $this->cache_reject_reason = 'dbcache.disabled'; return false; } /** * Skip if request URI is rejected */ if ( ! $this->_check_request_uri() ) { $this->cache_reject_reason = 'request'; return false; } /** * Skip if cookie is rejected */ if ( ! $this->_check_cookies() ) { $this->cache_reject_reason = 'cookie'; return false; } return true; } /** * Checks if a SQL query is cacheable. * * @param string $sql SQL query string. * * @return bool True if the SQL query is cacheable, false otherwise. */ public function _check_sql( $sql ) { $auto_reject_strings = $this->_config->get_array( 'dbcache.reject.words' ); if ( preg_match( '~' . implode( '|', $auto_reject_strings ) . '~is', $sql ) ) { return false; } $reject_sql = $this->_config->get_array( 'dbcache.reject.sql' ); foreach ( $reject_sql as $expr ) { $expr = trim( $expr ); $expr = str_replace( '{prefix}', $this->wpdb_mixin->prefix, $expr ); if ( ! empty( $expr ) && preg_match( '~' . $expr . '~i', $sql ) ) { return false; } } return true; } /** * Checks if the current request URI is cacheable. * * @return bool True if the request URI is cacheable, false otherwise. */ public function _check_request_uri() { $auto_reject_uri = array( 'wp-login', 'wp-register', ); $request_uri = isset( $_SERVER['REQUEST_URI'] ) ? filter_var( stripslashes( $_SERVER['REQUEST_URI'] ), FILTER_SANITIZE_URL ) : ''; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput foreach ( $auto_reject_uri as $uri ) { if ( strstr( $request_uri, $uri ) !== false ) { return false; } } $reject_uri = $this->_config->get_array( 'dbcache.reject.uri' ); $reject_uri = array_map( array( '\W3TC\Util_Environment', 'parse_path' ), $reject_uri ); foreach ( $reject_uri as $expr ) { $expr = trim( $expr ); if ( ! empty( $expr ) && preg_match( '~' . $expr . '~i', $request_uri ) ) { return false; } } return true; } /** * Checks if cookies are cacheable. * * @return bool True if cookies are cacheable, false otherwise. */ public function _check_cookies() { foreach ( array_keys( $_COOKIE ) as $cookie_name ) { if ( 'wordpress_test_cookie' === $cookie_name ) { continue; } if ( preg_match( '/^wp-postpass|^comment_author/', $cookie_name ) ) { return false; } } foreach ( $this->_config->get_array( 'dbcache.reject.cookie' ) as $reject_cookie ) { foreach ( array_keys( $_COOKIE ) as $cookie_name ) { if ( strstr( $cookie_name, $reject_cookie ) !== false ) { return false; } } } return true; } /** * Checks if the user is logged in. * * @return bool True if the user is not logged in, false otherwise. */ public function _check_logged_in() { foreach ( array_keys( $_COOKIE ) as $cookie_name ) { if ( strpos( $cookie_name, 'wordpress_logged_in' ) === 0 ) { return false; } } return true; } /** * Determines the group for caching based on the SQL query. * * @param string $sql SQL query string. * * @return string The cache group. */ private function _get_group( $sql ) { $sql = strtolower( $sql ); // Collect list of tables used in query. if ( preg_match_all( '~(^|[\s,`])' . $this->wpdb_mixin->prefix . '([0-9a-zA-Z_]+)~i', $sql, $m ) ) { $tables = array_unique( $m[2] ); } else { $tables = array(); } if ( $this->contains_only_tables( $tables, array( 'options' => '*' ) ) ) { $group = 'options'; } elseif ( $this->contains_only_tables( $tables, array( 'comments' => '*', 'commentsmeta' => '*', ) ) ) { $group = 'comments'; } elseif ( count( $tables ) <= 1 ) { $group = 'singletables'; // Request with single table affected. } else { $group = 'remaining'; } if ( $this->use_filters && function_exists( 'apply_filters' ) ) { $group = apply_filters( 'w3tc_dbcache_get_sql_group', $group, $sql, $tables ); } return $group; } /** * Determines if the query contains only allowed tables. * * @param array $tables List of tables used in the query. * @param array $allowed Allowed tables. * * @return bool True if only allowed tables are used, false otherwise. */ private function contains_only_tables( $tables, $allowed ) { if ( empty( $tables ) ) { return false; } foreach ( $tables as $t ) { if ( ! isset( $allowed[ $t ] ) ) { return false; } } return true; } /** * Retrieves the groups to flush based on the cache group. * * @param string $group The cache group to flush. * @param array $extras Optional extra parameters for flushing. * * @return array The groups to flush. */ private function _get_flush_groups( $group, $extras = array() ) { $groups_to_flush = array(); switch ( $group ) { case 'remaining': case 'singletables': $groups_to_flush = array( 'remaining' => '*', 'options' => '*', 'comments' => '*', 'singletables' => '*', ); break; /** * Options are updated on each second request, * ignore by default probability that SELECTs with joins with options are critical and don't flush "remaining". * That can be changed by w3tc_dbcache_get_flush_groups filter. */ case 'options': $groups_to_flush = array( $group => '*' ); break; default: $groups_to_flush = array( $group => '*', 'remaining' => '*', ); } if ( $this->use_filters && function_exists( 'apply_filters' ) ) { $groups_to_flush = apply_filters( 'w3tc_dbcache_get_flush_groups', $groups_to_flush, $group, $extras ); } return $groups_to_flush; } /** * Retrieves the reject reason message for the database cache. * * @return string The reject reason message, or an empty string if no reason is set. */ public function get_reject_reason() { if ( is_null( $this->cache_reject_reason ) ) { return ''; } $request_wide_string = $this->cache_reject_request_wide ? ( function_exists( '__' ) ? __( 'Request-wide ', 'w3-total-cache' ) : 'Request ' ) : ''; return $request_wide_string . $this->_get_reject_reason_message( $this->cache_reject_reason ); } /** * Retrieves a specific reject reason message based on the given key. * * @param string $key The key to identify the reject reason. * * @return string The reject reason message. */ private function _get_reject_reason_message( $key ) { if ( ! function_exists( '__' ) ) { return $key; } switch ( $key ) { case 'dbcache.disabled': return __( 'Database caching is disabled', 'w3-total-cache' ); case 'DONOTCACHEDB': return __( 'DONOTCACHEDB constant is defined', 'w3-total-cache' ); case 'DOING_AJAX': return __( 'Doing AJAX', 'w3-total-cache' ); case 'request': return __( 'Request URI is rejected', 'w3-total-cache' ); case 'cookie': return __( 'Cookie is rejected', 'w3-total-cache' ); case 'DOING_CRONG': return __( 'Doing cron', 'w3-total-cache' ); case 'APP_REQUEST': return __( 'Application request', 'w3-total-cache' ); case 'XMLRPC_REQUEST': return __( 'XMLRPC request', 'w3-total-cache' ); case 'WP_ADMIN': return __( 'wp-admin', 'w3-total-cache' ); case 'SHORTINIT': return __( 'Short init', 'w3-total-cache' ); case 'query': return __( 'Query is rejected', 'w3-total-cache' ); case 'user.logged_in': return __( 'User is logged in', 'w3-total-cache' ); default: return $key; } } /** * Appends the database cache status information to the footer comment. * * @param array $strings An array of strings to append additional information to. * * @return array The updated array of strings with appended database cache status. */ public function w3tc_footer_comment( $strings ) { $reject_reason = $this->get_reject_reason(); $append = empty( $reject_reason ) ? '' : sprintf( ' (%1$s)', $reject_reason ); if ( $this->query_hits ) { $strings[] = sprintf( // translators: 1: Query hits, 2: Total queries, 3: Total time, 4: Engine name, 5: Reject reason. __( 'Database Caching %1$d/%2$d queries in %3$.3f seconds using %4$s%5$s', 'w3-total-cache' ), $this->query_hits, $this->query_total, $this->time_total, Cache::engine_name( $this->_config->get_string( 'dbcache.engine' ) ), $append ); } else { $strings[] = sprintf( // translators: 1: Engine name, 2: Reject reason. __( 'Database Caching using %1$s%2$s', 'w3-total-cache' ), Cache::engine_name( $this->_config->get_string( 'dbcache.engine' ) ), $append ); } if ( $this->debug ) { $strings[] = ''; $strings[] = __( 'Db cache debug info:', 'w3-total-cache' ); $strings[] = sprintf( '%1$s%2$d', str_pad( __( 'Total queries: ', 'w3-total-cache' ), 20 ), $this->query_total ); $strings[] = sprintf( '%1$s%2$d', str_pad( __( 'Cached queries: ', 'w3-total-cache' ), 20 ), $this->query_hits ); $strings[] = sprintf( '%1$s%2$.4f', str_pad( __( 'Total query time: ', 'w3-total-cache' ), 20 ), $this->time_total ); } if ( $this->log_filehandle ) { fclose( $this->log_filehandle ); $this->log_filehandle = false; } return $strings; } /** * Records the usage statistics related to the database cache. * * @param object $storage The storage object where the statistics are saved. * * @return void */ public function w3tc_usage_statistics_of_request( $storage ) { $storage->counter_add( 'dbcache_calls_total', $this->query_total ); $storage->counter_add( 'dbcache_calls_hits', $this->query_hits ); $storage->counter_add( 'dbcache_flushes', $this->cache_flushes ); $time_ms = (int) ( $this->time_total * 1000 ); $storage->counter_add( 'dbcache_time_ms', $time_ms ); } /** * Logs a query line to the log file. * * @param string $line The query line to log. * * @return void */ private function log_query( $line ) { if ( ! $this->log_filehandle ) { $filename = Util_Debug::log_filename( 'dbcache-queries' ); $this->log_filehandle = fopen( $filename, 'a' ); } fputcsv( $this->log_filehandle, $line, "\t" ); } /** * Check if this is a WP-CLI call and objectcache.engine is using Disk. * * @since 2.8.1 * @access private * * @return bool */ private function is_wpcli_disk(): bool { $is_engine_disk = 'file' === $this->_config->get_string( 'dbcache.engine' ); $is_wpcli_disk = $this->_config->get_boolean( 'dbcache.wpcli_disk' ); return defined( 'WP_CLI' ) && \WP_CLI && $is_engine_disk && ! $is_wpcli_disk; } }
Upload File
Create Folder