X7ROOT File Manager
Current Path:
/home/mysptejz/public_html/web-hosting/wp-content/plugins/w3-total-cache
home
/
mysptejz
/
public_html
/
web-hosting
/
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
(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
(13.14 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
(6.25 KB)
📄
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
(10.06 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
(6.44 KB)
📄
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
(9.7 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
(8.51 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
(7.13 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
(13.04 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
(6.93 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
(6.49 KB)
📄
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
(23.15 KB)
📄
Extension_ImageService_Plugin_Admin.php
(42.7 KB)
📄
Extension_ImageService_Widget.js
(11.95 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
(7.5 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
(8.2 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
(6.08 KB)
📄
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
(7.43 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
(6.39 KB)
📄
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
(6.64 KB)
📄
Generic_WidgetSpreadTheWord_Plugin.php
(2.03 KB)
📄
Generic_WidgetSpreadTheWord_View.php
(579 B)
📄
Generic_WidgetStats.js
(9.08 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
(6.9 KB)
📄
Minify_GeneralPage_View_ShowHelpForce.js
(5.83 KB)
📄
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
(8.18 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
(15.26 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
(7.86 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
(6.32 KB)
📄
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
(23.2 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
(6.14 KB)
📄
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
(15.98 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: Cache_File.php
<?php /** * File: Cache_File.php * * @package W3TC */ namespace W3TC; /** * Class Cache_File * * phpcs:disable PSR2.Classes.PropertyDeclaration.Underscore * phpcs:disable PSR2.Methods.MethodDeclaration.Underscore * phpcs:disable WordPress.PHP.NoSilencedErrors.Discouraged * phpcs:disable WordPress.PHP.DiscouragedPHPFunctions.serialize_serialize * phpcs:disable WordPress.PHP.DiscouragedPHPFunctions.serialize_unserialize * phpcs:disable WordPress.WP.AlternativeFunctions */ class Cache_File extends Cache_Base { /** * Path to cache dir * * @var string */ protected $_cache_dir = ''; /** * Directory to flush * * @var string */ protected $_flush_dir = ''; /** * Exclude files * * @var array */ protected $_exclude = array(); /** * Flush time limit * * @var int */ protected $_flush_timelimit = 0; /** * File locking * * @var boolean */ protected $_locking = false; /** * If path should be generated based on wp_hash * * @var bool */ protected $_use_wp_hash = false; /** * Constructs the Cache_File instance. * * Initializes the cache file settings using the provided configuration array. Sets up the cache directory, exclusions, flush * time limits, locking behavior, and flushing directory based on the configuration. If specific configurations are not provided, * defaults are determined using environment utilities. * * @param array $config { * Optional. Configuration options for the cache file. * * @type string $cache_dir The directory where cache files are stored. * @type array $exclude List of items to exclude from caching. * @type int $flush_timelimit The time limit for flushing the cache. * @type bool $locking Whether to use locking for cache file access. * @type string $flush_dir The directory where cache flush operations occur. * @type bool $use_wp_hash Whether to use WordPress-specific hashing for cache files. * } * * @return void */ public function __construct( $config = array() ) { parent::__construct( $config ); if ( isset( $config['cache_dir'] ) ) { $this->_cache_dir = trim( $config['cache_dir'] ); } else { $this->_cache_dir = Util_Environment::cache_blog_dir( $config['section'], $config['blog_id'] ); } $this->_exclude = isset( $config['exclude'] ) ? (array) $config['exclude'] : array(); $this->_flush_timelimit = isset( $config['flush_timelimit'] ) ? (int) $config['flush_timelimit'] : 180; $this->_locking = isset( $config['locking'] ) ? (bool) $config['locking'] : false; if ( isset( $config['flush_dir'] ) ) { $this->_flush_dir = $config['flush_dir']; } elseif ( $config['blog_id'] <= 0 && ! isset( $config['cache_dir'] ) ) { // Clear whole section if we operate on master cache and in a mode when cache_dir not strictly specified. $this->_flush_dir = Util_Environment::cache_dir( $config['section'] ); } else { $this->_flush_dir = $this->_cache_dir; } if ( isset( $config['use_wp_hash'] ) && $config['use_wp_hash'] ) { $this->_use_wp_hash = true; } } /** * Adds a value to the cache if it does not already exist. * * Attempts to retrieve the value using the specified key and group. If the key does not exist in the cache, the value is * added with the specified expiration time. * * @param string $key The cache key. * @param mixed $value The variable to store in the cache. * @param int $expire Optional. Time in seconds until the cache entry expires. Default is 0 (no expiration). * @param string $group Optional. The group to which the cache belongs. Default is an empty string. * * @return bool True if the value was added, false if it already exists or on failure. */ public function add( $key, &$value, $expire = 0, $group = '' ) { if ( $this->get( $key, $group ) === false ) { return $this->set( $key, $value, $expire, $group ); } return false; } /** * Stores the value in the cache with the specified expiration time. The data is serialized and written to a file with a * header indicating the expiration time. File locking can be used for write operations if enabled. * * @param string $key An MD5 of the DB query. * @param mixed $content Data to be cached. * @param int $expiration Optional. Time in seconds until the cache entry expires. Default is 0 (no expiration). * @param string $group Optional. The group to which the cache belongs. Default is an empty string. * * @return bool True on success, false on failure. */ public function set( $key, $content, $expiration = 0, $group = '' ) { /** * Get the file pointer of the cache file. * The $key is transformed to a storage key (format "w3tc_INSTANCEID_HOST_BLOGID_dbcache_HASH"). * The file path is in the format: CACHEDIR/db/BLOGID/GROUP/[0-9a-f]{3}/[0-9a-f]{3}/[0-9a-f]{32}. */ $fp = $this->fopen_write( $key, $group, 'wb' ); if ( ! $fp ) { return false; } if ( $this->_locking ) { @flock( $fp, LOCK_EX ); } if ( $expiration <= 0 || $expiration > W3TC_CACHE_FILE_EXPIRE_MAX ) { $expiration = W3TC_CACHE_FILE_EXPIRE_MAX; } $expires_at = time() + $expiration; @fputs( $fp, pack( 'L', $expires_at ) ); @fputs( $fp, '<?php exit; ?>' ); @fputs( $fp, @serialize( $content ) ); @fclose( $fp ); if ( $this->_locking ) { @flock( $fp, LOCK_UN ); } return true; } /** * Retrieves a value from the cache along with its old state information. * * Fetches the cached value for the specified key and group. If the cache entry has expired but old data usage is enabled, the * expired data can still be returned while updating its expiration time temporarily. * * @param string $key The cache key. * @param string $group Optional. The group to which the cache belongs. Default is an empty string. * * @return array An array containing the unserialized cached data (or null if not found) and a boolean indicating if old data was used. */ public function get_with_old( $key, $group = '' ) { list( $data, $has_old_data ) = $this->_get_with_old_raw( $key, $group ); if ( ! empty( $data ) ) { $data_unserialized = @unserialize( $data ); } else { $data_unserialized = $data; } return array( $data_unserialized, $has_old_data ); } /** * Retrieves the raw cached data and expiration status for a key. * * Reads the cached data file to determine the expiration time and fetches the data if it is valid. If the data is expired and * old data usage is enabled, the expiration time is updated temporarily and the expired data is returned. * * @param string $key The cache key. * @param string $group Optional. The group to which the cache belongs. Default is an empty string. * * @return array An array containing the raw cached data (or null if not found) and a boolean indicating if old data was used. */ private function _get_with_old_raw( $key, $group = '' ) { $has_old_data = false; $storage_key = $this->get_item_key( $key ); $path = $this->_cache_dir . DIRECTORY_SEPARATOR . $this->_get_path( $storage_key, $group ); if ( ! is_readable( $path ) ) { return array( null, $has_old_data ); } $fp = @fopen( $path, 'rb' ); if ( ! $fp || 4 > filesize( $path ) ) { return array( null, $has_old_data ); } if ( $this->_locking ) { @flock( $fp, LOCK_SH ); } $expires_at = @fread( $fp, 4 ); $data = null; if ( false !== $expires_at ) { list( , $expires_at ) = @unpack( 'L', $expires_at ); if ( time() > $expires_at ) { if ( $this->_use_expired_data ) { // update expiration so other threads will use old data. $fp2 = @fopen( $path, 'cb' ); if ( $fp2 ) { @fputs( $fp2, pack( 'L', time() + 30 ) ); @fclose( $fp2 ); } $has_old_data = true; } } else { $data = ''; while ( ! @feof( $fp ) ) { $data .= @fread( $fp, 4096 ); } $data = substr( $data, 14 ); } } if ( $this->_locking ) { @flock( $fp, LOCK_UN ); } @fclose( $fp ); return array( $data, $has_old_data ); } /** * Replaces an existing cache value with a new one. * * Updates the cache entry for the specified key and group if it already exists. If the key does not exist, no action is taken. * * @param string $key The cache key. * @param mixed $value The variable to store in the cache. * @param int $expire Optional. Time in seconds until the cache entry expires. Default is 0 (no expiration). * @param string $group Optional. The group to which the cache belongs. Default is an empty string. * * @return bool True if the value was replaced, false otherwise. */ public function replace( $key, &$value, $expire = 0, $group = '' ) { if ( false !== $this->get( $key, $group ) ) { return $this->set( $key, $value, $expire, $group ); } return false; } /** * Deletes a value from the cache. * * Removes the cache entry for the specified key and group. If "use expired data" is enabled, the expiration time of the cache * entry is set to zero instead of deleting the file. * * @param string $key The cache key. * @param string $group Optional. The group to which the cache belongs. Default is an empty string. * * @return bool True if the value was successfully deleted, false otherwise. */ public function delete( $key, $group = '' ) { $storage_key = $this->get_item_key( $key ); $path = $this->_cache_dir . DIRECTORY_SEPARATOR . $this->_get_path( $storage_key, $group ); if ( ! file_exists( $path ) ) { return true; } if ( $this->_use_expired_data ) { $fp = @fopen( $path, 'cb' ); if ( $fp ) { if ( $this->_locking ) { @flock( $fp, LOCK_EX ); } @fputs( $fp, pack( 'L', 0 ) ); // make it expired. @fclose( $fp ); if ( $this->_locking ) { @flock( $fp, LOCK_UN ); } return true; } } return @unlink( $path ); } /** * Performs a hard delete of a cache entry. * * Completely removes the cache file for the specified key and group without checking for expiration or other conditions. * * @param string $key The cache key. * @param string $group Optional. The group to which the cache belongs. Default is an empty string. * * @return bool True if the file was successfully deleted, false otherwise. */ public function hard_delete( $key, $group = '' ) { $key = $this->get_item_key( $key ); $path = $this->_cache_dir . DIRECTORY_SEPARATOR . $this->_get_path( $key, $group ); return @unlink( $path ); } /** * Flushes all cache entries or those belonging to a specific group. * * Deletes all files in the cache directory or a specific group subdirectory. If the group is "sitemaps", the flush is performed * based on a regular expression defined in the configuration. * * @param string $group Optional. The group to flush. Default is an empty string. * * @return bool Always returns true. */ public function flush( $group = '' ) { @set_time_limit( $this->_flush_timelimit ); if ( 'sitemaps' === $group ) { $config = Dispatcher::config(); $sitemap_regex = $config->get_string( 'pgcache.purge.sitemap_regex' ); $this->_flush_based_on_regex( $sitemap_regex ); } else { $flush_dir = $group ? $this->_cache_dir . DIRECTORY_SEPARATOR . $group . DIRECTORY_SEPARATOR : $this->_flush_dir; Util_File::emptydir( $flush_dir, $this->_exclude ); } return true; } /** * Retrieves an extension array for ahead-of-generation cache handling. * * Returns an array containing the current timestamp for cache generation purposes. * * @param string $group The cache group. * * @return array An array with the `before_time` key set to the current timestamp. */ public function get_ahead_generation_extension( $group ) { return array( 'before_time' => time(), ); } /** * Flushes a cache group after ahead-of-generation processing. * * Performs any cleanup or flushing required for a cache group after an ahead-of-generation operation. * * @param string $group The cache group. * @param array $extension { * An extension array with generation metadata. * * @type mixed $before_time The time before the generation. * } * * @return void */ public function flush_group_after_ahead_generation( $group, $extension ) { $dir = $this->_flush_dir; $extension['before_time']; } /** * Retrieves the last modified time of a cache file. * * Returns the modification time of the cache file for the specified key and group. * * @param string $key The cache key. * @param string $group Optional. The group to which the cache belongs. Default is an empty string. * * @return int|false The file modification time as a Unix timestamp, or false if the file does not exist. */ public function mtime( $key, $group = '' ) { $path = $this->_cache_dir . DIRECTORY_SEPARATOR . $this->_get_path( $key, $group ); if ( file_exists( $path ) ) { return @filemtime( $path ); } return false; } /** * Returns subpath for the cache file (format: [0-9a-f]{3}/[0-9a-f]{3}/[0-9a-f]{32}). * * Creates the file path for the cache file based on the key and group. A hash of the key is used to create subdirectories * for organizational purposes. * * @param string $key Storage key (format: "w3tc_INSTANCEID_HOST_BLOGID_dbcache_HASH"). * @param string $group Optional. The group to which the cache belongs. Default is an empty string. * * @return string The file path for the cache entry. */ public function _get_path( $key, $group = '' ) { if ( $this->_use_wp_hash && function_exists( 'wp_hash' ) ) { $hash = wp_hash( $key ); // Most common. } else { $hash = md5( $key ); // Less common, but still used in some cases. } return ( $group ? $group . DIRECTORY_SEPARATOR : '' ) . sprintf( '%s/%s/%s.php', substr( $hash, 0, 3 ), substr( $hash, 3, 3 ), $hash ); } /** * Calculates the size of the cache directory. * * Recursively calculates the total size and number of files in the cache directory. Stops processing if the timeout is exceeded. * * @param string $timeout_time The timeout timestamp. * * @return array An array containing the total size (`bytes`), the number of items (`items`), and whether a timeout occurred * (`timeout_occurred`). */ public function get_stats_size( $timeout_time ) { $size = array( 'bytes' => 0, 'items' => 0, 'timeout_occurred' => false, ); $size = $this->dirsize( $this->_cache_dir, $size, $timeout_time ); return $size; } /** * Recursively calculates the size of a directory. * * Iterates through all files and subdirectories within the specified directory to calculate the total size and count of items. * Checks for timeouts every 1000 items. * * @param string $path The directory path. * @param array $size { * The size data array. * * @type int $bytes The total size of the directory in bytes. * @type int $items The total number of items (files/subdirectories). * @type bool $timeout_occurred Flag indicating whether a timeout has occurred. * } * @param int $timeout_time The timeout timestamp. * * @return array Updated size data. */ private function dirsize( $path, $size, $timeout_time ) { $dir = @opendir( $path ); if ( $dir ) { $entry = @readdir( $dir ); while ( ! $size['timeout_occurred'] && false !== $entry ) { if ( '.' === $entry || '..' === $entry ) { $entry = @readdir( $dir ); continue; } $full_path = $path . DIRECTORY_SEPARATOR . $entry; if ( @is_dir( $full_path ) ) { $size = $this->dirsize( $full_path, $size, $timeout_time ); } else { $size['bytes'] += @filesize( $full_path ); // dont check time() for each file, quite expensive. ++$size['items']; if ( 0 === $size['items'] % 1000 ) { $size['timeout_occurred'] |= ( time() > $timeout_time ); } } $entry = @readdir( $dir ); } @closedir( $dir ); } return $size; } /** * Sets a new value if the old value matches the current value. * * This method checks if the current value in the cache matches the provided old value. If they match, it sets the new value. * Cannot guarantee atomicity due to potential file lock failures. * * @param string $key Cache key. * @param mixed $old_value The expected current value. * @param mixed $new_value The value to set if the old value matches. * * @return bool True if the value was set, false otherwise. */ public function set_if_maybe_equals( $key, $old_value, $new_value ) { // Cant guarantee atomic action here, filelocks fail often. $value = $this->get( $key ); if ( isset( $old_value['content'] ) && $value['content'] !== $old_value['content'] ) { return false; } return $this->set( $key, $new_value ); } /** * Increments a counter stored in the cache by a given value. * * This method appends the increment value to the counter file. If the value is 1, it stores it as 'x' for efficiency. Larger * increments are stored as space-separated integers. * * @param string $key Cache key. * @param int $value The increment value (must be non-zero). * * @return bool True on success, false on failure. */ public function counter_add( $key, $value ) { if ( 0 === $value ) { return true; } $fp = $this->fopen_write( $key, '', 'a' ); if ( ! $fp ) { return false; } // use "x" to store increment, since it's most often case // and it will save 50% of size if only increments are used. if ( 1 === $value ) { @fputs( $fp, 'x' ); } else { @fputs( $fp, ' ' . (int) $value ); } @fclose( $fp ); return true; } /** * Sets a counter value in the cache. * * This method initializes a counter file with the provided value, along with an expiration time and a PHP exit directive to * prevent execution. * * @param string $key Cache key. * @param int $value The counter value to set. * * @return bool True on success, false on failure. */ public function counter_set( $key, $value ) { $fp = $this->fopen_write( $key, '', 'wb' ); if ( ! $fp ) { return false; } $expire = W3TC_CACHE_FILE_EXPIRE_MAX; $expires_at = time() + $expire; @fputs( $fp, pack( 'L', $expires_at ) ); @fputs( $fp, '<?php exit; ?>' ); @fputs( $fp, (int) $value ); @fclose( $fp ); return true; } /** * Retrieves the value of a counter from the cache. * * This method reads the counter file and calculates the total value by counting occurrences of 'x' and summing other stored values. * * @param string $key Cache key. * * @return int The counter value, or 0 if the key does not exist. */ public function counter_get( $key ) { list( $value, $old_data ) = $this->_get_with_old_raw( $key ); if ( empty( $value ) ) { return 0; } $original_length = strlen( $value ); $cut_value = str_replace( 'x', '', $value ); $count = $original_length - strlen( $cut_value ); // values more than 1 are stored as <space>value. $a = explode( ' ', $cut_value ); foreach ( $a as $counter_value ) { $count += (int) $counter_value; } return $count; } /** * Open the cache file for writing and return the file pointer. * * Ensures the directory structure exists before attempting to open the file. * * @param string $key An MD5 of the DB query. * @param string $group Cache group. * @param string $mode File mode. For example: 'wb' for write binary. * * @return resource|false File pointer on success, false on failure. */ private function fopen_write( $key, $group, $mode ) { // Get the storage key (format: "w3tc_INSTANCEID_HOST_BLOGID_dbcache_$key"). $storage_key = $this->get_item_key( $key ); // Get the subpath for the cache file (format: [0-9a-f]{3}/[0-9a-f]{3}/[0-9a-f]{32}). $sub_path = $this->_get_path( $storage_key, $group ); // Ge the entire path of the cache file. $path = $this->_cache_dir . DIRECTORY_SEPARATOR . $sub_path; // Create the directory if it does not exist. $dir = dirname( $path ); if ( ! @is_dir( $dir ) ) { if ( ! Util_File::mkdir_from( $dir, dirname( W3TC_CACHE_DIR ) ) ) { return false; } } // Open the cache file for writing. return @fopen( $path, $mode ); } /** * Flushes cache files matching a specific regex pattern. * * This method scans a directory and removes cache files that match the provided regular expression. Supports multisite setups. * * @since 2.7.1 * * @param string $regex The regular expression pattern to match file names. * * @return void */ private function _flush_based_on_regex( $regex ) { if ( Util_Environment::is_wpmu() && ! Util_Environment::is_wpmu_subdomain() ) { $domain = get_home_url(); $parsed = parse_url( $domain ); $host = $parsed['host']; $path = isset( $parsed['path'] ) ? '/' . trim( $parsed['path'], '/' ) : ''; $flush_dir = W3TC_CACHE_PAGE_ENHANCED_DIR . DIRECTORY_SEPARATOR . $host . $path; } else { $flush_dir = W3TC_CACHE_PAGE_ENHANCED_DIR . DIRECTORY_SEPARATOR . Util_Environment::host(); } $dir = @opendir( $flush_dir ); if ( $dir ) { $entry = @readdir( $dir ); while ( false !== $entry ) { if ( '.' === $entry || '..' === $entry ) { $entry = @readdir( $dir ); continue; } if ( preg_match( '~' . $regex . '~', basename( $entry ) ) ) { Util_File::rmdir( $flush_dir . DIRECTORY_SEPARATOR . $entry ); } $entry = @readdir( $dir ); } @closedir( $dir ); } } }
Upload File
Create Folder