<?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/private-banks-in-india-discover-top-choices-for-your-wealth/ India Banks - Loans, Savings, Digital Banking Insights en-GB 2026-07-21T02:30:18+05:30 Private Banks in India: Discover Top Choices for Your Wealth banking services India, best private banks, financial institutions India, investment options India, private banking benefits, private banks in India, top private sector banks, wealth management India https://indiabank.net/wp-content/uploads/2025/06/pexels-photo-6465163-scaled.jpeg https://indiabank.net/india-post-bank-discover-the-benefits-you-didnt-know-about/ India Banks - Loans, Savings, Digital Banking Insights en-GB 2026-07-21T02:30:18+05:30 India Post Bank: Discover The Benefits You Didn’t Know About banking services in India, benefits of India Post Bank, digital banking in India, financial inclusion in India, India Post Bank, India Post financial services, India Post savings accounts, postal banking advantages https://indiabank.net/wp-content/uploads/2025/06/pexels-photo-12645614-scaled.jpeg https://indiabank.net/government-banks-in-india-discover-their-role-and-impact-today/ India Banks - Loans, Savings, Digital Banking Insights en-GB 2026-07-20T19:00:16+05:30 Government Banks in India: Discover Their Role and Impact Today banking sector reforms, financial inclusion in India, government banks in India, government-owned banks, impact of government banks, Indian banking system, public sector banks, role of government banks https://indiabank.net/wp-content/uploads/2025/06/pexels-photo-14907338-scaled.jpeg https://indiabank.net/bank-of-india-discover-exceptional-services-that-transform-banking/ India Banks - Loans, Savings, Digital Banking Insights en-GB 2026-07-20T19:00:16+05:30 Bank Of India: Discover Exceptional Services That Transform Banking Bank of India, bank reviews, banking services, customer service, digital banking, financial solutions, Indian banks, personal finance https://indiabank.net/wp-content/uploads/2025/05/pexels-photo-14907356-scaled.jpeg https://indiabank.net/best-bank-in-india-discover-the-top-choice-for-your-finances/ India Banks - Loans, Savings, Digital Banking Insights en-GB 2026-07-20T04:00:16+05:30 Best Bank in India: Discover The Top Choice for Your Finances bank comparison India, banking tips India, best bank in India, best savings account India, customer service banks India, financial services India, Indian banking sector, top banks in India https://indiabank.net/wp-content/uploads/2025/06/pexels-photo-3521353-4-scaled.jpeg https://indiabank.net/bank-of-india-balance-enquiry-number-discover-your-account-status/ India Banks - Loans, Savings, Digital Banking Insights en-GB 2026-07-20T04:00:16+05:30 Bank of India Balance Enquiry Number: Discover Your Account Status balance enquiry number, Bank of India, Bank of India account status, banking services, check bank balance, customer service, Financial Management, mobile banking https://indiabank.net/wp-content/uploads/2025/06/pexels-photo-16600135-scaled.jpeg https://indiabank.net/bank-of-india-internet-banking-login-unlock-seamless-access-now/ India Banks - Loans, Savings, Digital Banking Insights en-GB 2026-07-19T20:30:16+05:30 Bank of India Internet Banking Login: Unlock Seamless Access Now! Bank of India, Bank of India login, Bank of India Services, digital banking, Internet Banking, Internet Banking Access, Online Banking, Secure Banking https://indiabank.net/wp-content/uploads/2025/06/pexels-photo-4482900-1-scaled.jpeg https://indiabank.net/union-bank-of-india-online-unlock-seamless-banking-today/ India Banks - Loans, Savings, Digital Banking Insights en-GB 2026-07-19T20:30:16+05:30 Union Bank of India Online: Unlock Seamless Banking Today! banking services, digital banking, Financial Technology, mobile banking, Online Banking, seamless banking, Union Bank of India, Union Bank online services https://indiabank.net/wp-content/uploads/2025/06/pexels-photo-13970482-5-scaled.jpeg https://indiabank.net/state-bank-of-india-near-me-discover-your-convenient-banking-options/ India Banks - Loans, Savings, Digital Banking Insights en-GB 2026-07-18T14:15:17+05:30 State Bank of India Near Me: Discover Your Convenient Banking Options banking solutions in my area, convenient banking options, find SBI ATM, local SBI services, SBI branches near me, SBI customer service, State Bank of India, State Bank of India locator https://indiabank.net/wp-content/uploads/2025/06/pexels-photo-19153798-3-scaled.jpeg https://indiabank.net/new-india-cooperative-bank-unlocking-financial-freedom-today/ India Banks - Loans, Savings, Digital Banking Insights en-GB 2026-07-18T14:15:17+05:30 New India Cooperative Bank: Unlocking Financial Freedom Today banking services, community banking, cooperative banking, financial freedom, financial inclusion, India banking sector, New India Cooperative Bank, personal finance https://indiabank.net/wp-content/uploads/2025/06/pexels-photo-6257844-scaled.jpeg https://indiabank.net/new-india-bank-unlocking-financial-freedom-with-innovative-services/ India Banks - Loans, Savings, Digital Banking Insights en-GB 2026-07-18T06:30:17+05:30 New India Bank: Unlocking Financial Freedom With Innovative Services banking technology, customer-centric banking, digital banking solutions, financial freedom, financial literacy, innovative banking services, New India Bank, personal finance tips https://indiabank.net/wp-content/uploads/2025/06/pexels-photo-14520365-scaled.jpeg https://indiabank.net/nationalised-banks-in-india-unlocking-financial-opportunities-today/ India Banks - Loans, Savings, Digital Banking Insights en-GB 2026-07-18T06:30:17+05:30 Nationalised Banks in India: Unlocking Financial Opportunities Today banking services India, economic growth India, financial inclusion in India, financial opportunities in India, government banks India, Indian banking sector, nationalised banks in India, public sector banks https://indiabank.net/wp-content/uploads/2025/06/pexels-photo-10326878-scaled.jpeg