<?php /** * Built-in Cache System * * Ultra-fast page caching system built into the theme * No plugins needed - WP Rocket alternative * * @package MyTheme */ // Exit if accessed directly if (!defined('ABSPATH')) { exit; } class MyTheme_Cache_System { private $cache_dir; private $cache_enabled; private $cache_duration; /** * Constructor */ public function __construct() { // Cache settings $this->cache_enabled = function_exists('mytheme_get_option') ? mytheme_get_option('cache_enabled', true) : true; $this->cache_duration = function_exists('mytheme_get_option') ? mytheme_get_option('cache_duration', 3600) : 3600; // Cache directory $upload_dir = wp_upload_dir(); $this->cache_dir = $upload_dir['basedir'] . '/mytheme-cache'; // Initialize $this->init(); } /** * Initialize cache system */ private function init() { if (!$this->cache_enabled) { return; } // Create cache directory $this->create_cache_dir(); // Start output buffering for page caching add_action('template_redirect', array($this, 'start_page_cache'), 1); // Clear cache actions add_action('save_post', array($this, 'clear_post_cache')); add_action('comment_post', array($this, 'clear_post_cache')); add_action('switch_theme', array($this, 'clear_all_cache')); add_action('mytheme_clear_cache', array($this, 'clear_all_cache')); // Admin bar cache clear button add_action('admin_bar_menu', array($this, 'add_cache_clear_button'), 999); add_action('admin_post_mytheme_clear_cache', array($this, 'handle_cache_clear')); // AJAX cache clear add_action('wp_ajax_mytheme_clear_cache', array($this, 'ajax_clear_cache')); } /** * Create cache directory */ private function create_cache_dir() { if (!file_exists($this->cache_dir)) { wp_mkdir_p($this->cache_dir); // Add .htaccess for security $htaccess = $this->cache_dir . '/.htaccess'; if (!file_exists($htaccess)) { file_put_contents($htaccess, 'deny from all'); } } } /** * Get cache file path */ private function get_cache_file_path($url = null) { if ($url === null) { $url = $_SERVER['REQUEST_URI']; } // Generate unique cache key $cache_key = md5($url . (is_user_logged_in() ? 'logged_in' : 'guest')); return $this->cache_dir . '/' . $cache_key . '.html'; } /** * Start page caching */ public function start_page_cache() { // Don't cache for logged-in users or admin if (is_user_logged_in() || is_admin()) { return; } // Don't cache POST requests if ($_SERVER['REQUEST_METHOD'] === 'POST') { return; } // Don't cache search, 404, feeds if (is_search() || is_404() || is_feed() || is_trackback()) { return; } // Check if cached version exists $cache_file = $this->get_cache_file_path(); if (file_exists($cache_file)) { $cache_age = time() - filemtime($cache_file); // Serve cached version if not expired if ($cache_age < $this->cache_duration) { header('X-MyTheme-Cache: HIT'); header('Cache-Control: max-age=' . $this->cache_duration); readfile($cache_file); exit; } else { // Delete expired cache unlink($cache_file); } } // Start output buffering to create cache header('X-MyTheme-Cache: MISS'); ob_start(array($this, 'save_page_cache')); } /** * Save page to cache */ public function save_page_cache($html) { // Don't cache if HTML is empty or too small if (strlen($html) < 255) { return $html; } // Save to cache file $cache_file = $this->get_cache_file_path(); file_put_contents($cache_file, $html); return $html; } /** * Clear post cache */ public function clear_post_cache($post_id) { $post_url = get_permalink($post_id); $cache_file = $this->get_cache_file_path($post_url); if (file_exists($cache_file)) { unlink($cache_file); } // Also clear homepage and category archives $this->clear_homepage_cache(); } /** * Clear homepage cache */ private function clear_homepage_cache() { $home_cache = $this->get_cache_file_path('/'); if (file_exists($home_cache)) { unlink($home_cache); } } /** * Clear all cache */ public function clear_all_cache() { if (!file_exists($this->cache_dir)) { return; } // Delete all cache files $files = glob($this->cache_dir . '/*.html'); foreach ($files as $file) { if (is_file($file)) { unlink($file); } } } /** * Add cache clear button to admin bar */ public function add_cache_clear_button($wp_admin_bar) { if (!current_user_can('manage_options')) { return; } $wp_admin_bar->add_node(array( 'id' => 'mytheme-clear-cache', 'title' => 'Clear Cache', 'href' => wp_nonce_url(admin_url('admin-post.php?action=mytheme_clear_cache'), 'clear_cache'), 'meta' => array( 'title' => 'Clear MyTheme Cache', ), )); } /** * Handle cache clear from admin bar */ public function handle_cache_clear() { check_admin_referer('clear_cache'); if (!current_user_can('manage_options')) { wp_die('Unauthorized'); } $this->clear_all_cache(); wp_redirect(wp_get_referer()); exit; } /** * AJAX clear cache */ public function ajax_clear_cache() { check_ajax_referer('mytheme-nonce', 'nonce'); if (!current_user_can('manage_options')) { wp_send_json_error('Unauthorized'); } $this->clear_all_cache(); wp_send_json_success('Cache cleared successfully'); } /** * Get cache statistics */ public function get_cache_stats() { if (!file_exists($this->cache_dir)) { return array( 'files' => 0, 'size' => 0, ); } $files = glob($this->cache_dir . '/*.html'); $total_size = 0; foreach ($files as $file) { $total_size += filesize($file); } return array( 'files' => count($files), 'size' => size_format($total_size), 'size_bytes' => $total_size, ); } } // Initialize cache system new MyTheme_Cache_System(); /** * Helper function to clear cache */ function mytheme_clear_cache() { do_action('mytheme_clear_cache'); } https://indiabank.net/union-bank-of-india-internet-banking-unlock-seamless-banking-today/ India Banks - Loans, Savings, Digital Banking Insights en-GB 2026-07-16T16:45:16+05:30 Union Bank of India Internet Banking: Unlock Seamless Banking Today banking convenience, Internet Banking, online banking services, seamless banking solutions, Secure Online Transactions, Union Bank Digital Banking, Union Bank Mobile App, Union Bank of India https://indiabank.net/wp-content/uploads/2025/06/pexels-photo-4482900-scaled.jpeg https://indiabank.net/central-bank-of-india-ifsc-code-unlock-your-banking-potential-today/ India Banks - Loans, Savings, Digital Banking Insights en-GB 2026-07-16T16:45:16+05:30 Central Bank of India IFSC Code: Unlock Your Banking Potential Today banking in India, Central Bank of India Banking Services, Central Bank of India Branch Locator, Central Bank of India IFSC Code, Central Bank of India Online Banking, How to Use IFSC Code, IFSC Code Explained, IFSC Code for Central Bank of India https://indiabank.net/wp-content/uploads/2025/06/pexels-photo-14907311-1-scaled.jpeg https://indiabank.net/bank-of-india-net-banking-retail-login-unlock-seamless-access/ India Banks - Loans, Savings, Digital Banking Insights en-GB 2026-07-16T01:45:18+05:30 Bank Of India Net Banking Retail Login: Unlock Seamless Access Bank of India customer service, Bank of India net banking, Bank of India online access, BOI net banking guide, BOI retail login, digital banking solutions, online banking India, secure banking login https://indiabank.net/wp-content/uploads/2025/06/pexels-photo-7621539-scaled.jpeg https://indiabank.net/bank-of-india-customer-care-discover-solutions-for-your-queries/ India Banks - Loans, Savings, Digital Banking Insights en-GB 2026-07-16T01:45:18+05:30 Bank of India Customer Care: Discover Solutions for Your Queries Bank of India complaint resolution, Bank of India contact number, Bank of India customer feedback, Bank of India customer service, Bank of India FAQs, Bank of India helpline, Bank of India online assistance, Bank of India support https://indiabank.net/wp-content/uploads/2025/06/pexels-photo-12141453-scaled.jpeg https://indiabank.net/union-bank-of-india-ifsc-code-unlock-seamless-banking-today/ India Banks - Loans, Savings, Digital Banking Insights en-GB 2026-07-15T18:00:16+05:30 Union Bank of India IFSC Code: Unlock Seamless Banking Today banking made easy, IFSC code guide, IFSC Code India, seamless banking solutions, Union Bank branch codes, Union Bank of India IFSC Code, Union Bank of India services, Union Bank online banking https://indiabank.net/wp-content/uploads/2025/06/pexels-photo-13970482-2-scaled.jpeg https://indiabank.net/union-bank-of-india-corporate-login-unlock-your-banking-potential/ India Banks - Loans, Savings, Digital Banking Insights en-GB 2026-07-15T18:00:16+05:30 Union Bank of India Corporate Login: Unlock Your Banking Potential Business Banking Solutions, Corporate Banking, Corporate Login, digital banking, Online Banking, Secure Banking Access, Union Bank login, Union Bank of India https://indiabank.net/wp-content/uploads/2025/06/pexels-photo-8363135-scaled.jpeg https://indiabank.net/state-bank-of-india-news-discover-the-latest-updates-today/ India Banks - Loans, Savings, Digital Banking Insights en-GB 2026-07-15T03:00:17+05:30 State Bank of India News: Discover the Latest Updates Today! banking news India, SBI announcements, SBI financial news, SBI latest news, SBI news updates, State Bank news today, State Bank of India, State Bank of India updates https://indiabank.net/wp-content/uploads/2025/06/pexels-photo-19153798-2-scaled.jpeg https://indiabank.net/state-bank-of-india-ifsc-code-unlock-hassle-free-transactions-today/ India Banks - Loans, Savings, Digital Banking Insights en-GB 2026-07-15T03:00:17+05:30 State Bank of India IFSC Code: Unlock Hassle-Free Transactions Today! financial transactions, IFSC Code, Indian banking, Online Banking, SBI IFSC Code, SBI services, secure transactions, State Bank of India https://indiabank.net/wp-content/uploads/2025/06/pexels-photo-19153799-2-scaled.jpeg https://indiabank.net/state-bank-of-india-customer-care-number-unlock-instant-support/ India Banks - Loans, Savings, Digital Banking Insights en-GB 2026-07-14T19:30:16+05:30 State Bank of India Customer Care Number: Unlock Instant Support banking customer support, SBI contact details, SBI customer care, SBI helpline, SBI support number, State Bank customer service, State Bank of India, State Bank of India assistance https://indiabank.net/wp-content/uploads/2025/06/pexels-photo-4386371-scaled.jpeg https://indiabank.net/state-bank-of-india-corporate-net-banking-unlock-your-financial-power/ India Banks - Loans, Savings, Digital Banking Insights en-GB 2026-07-14T19:30:15+05:30 State Bank of India Corporate Net Banking: Unlock Your Financial Power Business Banking Solutions, Corporate Net Banking, digital banking India, Financial Management, SBI Corporate Services, SBI online banking, Secure Online Transactions, State Bank of India https://indiabank.net/wp-content/uploads/2025/06/pexels-photo-13970482-1-scaled.jpeg https://indiabank.net/india-post-payment-bank-customer-care-number-get-swift-support-now/ India Banks - Loans, Savings, Digital Banking Insights en-GB 2026-07-14T04:15:16+05:30 India Post Payment Bank Customer Care Number: Get Swift Support Now banking assistance India, banking support India, customer care number, customer service hotline, India Post contact details, India Post Payment Bank, India Post support, payment bank customer service https://indiabank.net/wp-content/uploads/2025/06/money-card-business-credit-card-50987-scaled.jpeg https://indiabank.net/bank-of-india-retail-login-unlock-your-account-effortlessly-today/ India Banks - Loans, Savings, Digital Banking Insights en-GB 2026-07-14T04:15:16+05:30 Bank of India Retail Login: Unlock Your Account Effortlessly Today! Account Access, Bank of India, Bank of India login, Banking Security, Customer Support, digital banking, Online Banking, Retail Banking https://indiabank.net/wp-content/uploads/2025/06/pexels-photo-7621536-scaled.jpeg