<?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-share-is-it-time-to-invest-in-this-gem/ India Banks - Loans, Savings, Digital Banking Insights en-GB 2026-07-24T13:45:17+05:30 Union Bank of India Share: Is It Time to Invest in This Gem? banking sector shares, financial tips for investors, Indian banking stocks, invest in Union Bank of India, stock market investment, Union Bank of India performance, Union Bank of India share, Union Bank stock analysis https://indiabank.net/wp-content/uploads/2025/06/pexels-photo-17435472-1-scaled.jpeg https://indiabank.net/bank-of-india-share-price-discover-what-drives-its-market-trends/ India Banks - Loans, Savings, Digital Banking Insights en-GB 2026-07-24T13:45:17+05:30 Bank of India Share Price: Discover What Drives Its Market Trends Bank of India financial performance, Bank of India investment insights, Bank of India market trends, Bank of India share price, Bank of India stock analysis, Indian banking sector stocks, share price prediction Bank of India, stock market analysis https://indiabank.net/wp-content/uploads/2025/06/pexels-photo-30572289-scaled.jpeg https://indiabank.net/union-bank-of-india-online-account-opening-unlock-your-banking-potential/ India Banks - Loans, Savings, Digital Banking Insights en-GB 2026-07-24T06:00:17+05:30 Union Bank of India Online Account Opening: Unlock Your Banking Potential account registration, banking potential, banking services, digital banking, financial services, online account opening, Union Bank of India, Union Bank online banking https://indiabank.net/wp-content/uploads/2025/06/pexels-photo-7621536-2-scaled.jpeg https://indiabank.net/bank-of-india-net-banking-unlock-seamless-online-banking-today/ India Banks - Loans, Savings, Digital Banking Insights en-GB 2026-07-24T06:00:17+05:30 Bank of India Net Banking: Unlock Seamless Online Banking Today! Bank of India, Bank of India Services, Banking Tips, digital banking, Internet Banking, Net Banking, Online Banking, Secure Online Transactions https://indiabank.net/wp-content/uploads/2025/06/pexels-photo-14907310-scaled.jpeg https://indiabank.net/union-bank-of-india-net-banking-login-unlock-seamless-access/ India Banks - Loans, Savings, Digital Banking Insights en-GB 2026-07-23T15:00:18+05:30 Union Bank of India Net Banking Login: Unlock Seamless Access digital banking India, Net Banking Login, online banking India, Secure Banking Access, UBI Login Guide, Union Bank customer support, Union Bank of India, Union Bank online services https://indiabank.net/wp-content/uploads/2025/06/pexels-photo-5243610-1-scaled.jpeg https://indiabank.net/india-post-payment-bank-unlocking-your-financial-freedom-today/ India Banks - Loans, Savings, Digital Banking Insights en-GB 2026-07-23T15:00:17+05:30 India Post Payment Bank: Unlocking Your Financial Freedom Today banking solutions, digital banking India, financial freedom, financial inclusion, India Post Payment Bank, India Post services, online banking services, secure transactions https://indiabank.net/wp-content/uploads/2025/06/pexels-photo-7821460-scaled.jpeg https://indiabank.net/union-bank-of-india-account-opening-unlock-your-financial-future/ India Banks - Loans, Savings, Digital Banking Insights en-GB 2026-07-23T07:30:17+05:30 Union Bank of India Account Opening: Unlock Your Financial Future account opening process, banking services, financial future, online banking India, personal finance tips, Union Bank accounts, Union Bank customer service, Union Bank of India https://indiabank.net/wp-content/uploads/2025/06/pexels-photo-7621536-1-scaled.jpeg https://indiabank.net/state-bank-of-india-atm-unlock-convenient-banking-solutions-today/ India Banks - Loans, Savings, Digital Banking Insights en-GB 2026-07-23T07:30:17+05:30 State Bank of India ATM: Unlock Convenient Banking Solutions Today ATM features SBI, ATM locations SBI, banking technology India, convenient banking solutions, digital banking India, SBI ATM services, State Bank of India ATM, State Bank of India services https://indiabank.net/wp-content/uploads/2025/06/pexels-photo-17244624-scaled.jpeg