Performance Improvements: - Created CSS consolidation build process with 87KB combined file - Reduces HTTP requests from 20+ CSS files to 1 consolidated file - Added build script for automated CSS optimization Background Job System: - Implemented HVAC_Background_Jobs class with WordPress cron integration - Supports geocoding batches, CSV imports, profile migrations, cache warming - Queue management with priority, retry logic, and failure handling - AJAX endpoints for job status monitoring and cancellation Database Query Monitoring: - Added HVAC_Query_Monitor for development and performance analysis - Tracks slow queries (>0.1s), execution times, and memory usage - Generates optimization recommendations automatically - Admin interface for query analysis and debugging - WP-CLI integration for command-line monitoring Technical Details: - Background jobs process 5 per batch with 3 retry attempts - Query monitor logs only HVAC plugin queries to reduce noise - Consolidated CSS maintains dependency order and includes 7 core files - All systems include proper error handling and logging integration Co-Authored-By: Claude <noreply@anthropic.com>
		
			
				
	
	
		
			105 lines
		
	
	
		
			No EOL
		
	
	
		
			3.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			No EOL
		
	
	
		
			3.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * CSS Consolidation Build Script
 | |
|  * 
 | |
|  * Combines frequently used HVAC CSS files into a single consolidated file
 | |
|  * for improved performance by reducing HTTP requests.
 | |
|  */
 | |
| 
 | |
| // Ensure this runs only from CLI
 | |
| if (php_sapi_name() !== 'cli') {
 | |
|     die('This script must be run from command line');
 | |
| }
 | |
| 
 | |
| // Define base paths
 | |
| $plugin_dir = dirname(__DIR__);
 | |
| $css_dir = $plugin_dir . '/assets/css';
 | |
| $consolidated_file = $css_dir . '/hvac-consolidated.css';
 | |
| 
 | |
| // Core CSS files to consolidate (in order of dependency)
 | |
| $core_files = [
 | |
|     'hvac-community-events.css',
 | |
|     'hvac-page-templates.css', 
 | |
|     'hvac-layout.css',
 | |
|     'hvac-common.css'
 | |
| ];
 | |
| 
 | |
| // Optional CSS files that are commonly loaded together
 | |
| $common_files = [
 | |
|     'hvac-dashboard.css',
 | |
|     'hvac-trainer-profile.css',
 | |
|     'hvac-certificates.css'
 | |
| ];
 | |
| 
 | |
| /**
 | |
|  * Consolidate CSS files
 | |
|  */
 | |
| function consolidate_css_files($css_dir, $files, $output_file) {
 | |
|     $consolidated_content = "/* HVAC Consolidated CSS - Generated on " . date('Y-m-d H:i:s') . " */\n\n";
 | |
|     
 | |
|     $total_size = 0;
 | |
|     $files_processed = 0;
 | |
|     
 | |
|     foreach ($files as $file) {
 | |
|         $file_path = $css_dir . '/' . $file;
 | |
|         
 | |
|         if (!file_exists($file_path)) {
 | |
|             echo "Warning: File not found: $file\n";
 | |
|             continue;
 | |
|         }
 | |
|         
 | |
|         $content = file_get_contents($file_path);
 | |
|         if ($content === false) {
 | |
|             echo "Error: Could not read file: $file\n";
 | |
|             continue;
 | |
|         }
 | |
|         
 | |
|         // Add file header comment
 | |
|         $consolidated_content .= "/* === $file === */\n";
 | |
|         $consolidated_content .= $content;
 | |
|         $consolidated_content .= "\n\n";
 | |
|         
 | |
|         $size = filesize($file_path);
 | |
|         $total_size += $size;
 | |
|         $files_processed++;
 | |
|         
 | |
|         echo "Processed: $file (" . number_format($size) . " bytes)\n";
 | |
|     }
 | |
|     
 | |
|     // Write consolidated file
 | |
|     $result = file_put_contents($output_file, $consolidated_content);
 | |
|     
 | |
|     if ($result === false) {
 | |
|         echo "Error: Could not write consolidated file: $output_file\n";
 | |
|         return false;
 | |
|     }
 | |
|     
 | |
|     $final_size = filesize($output_file);
 | |
|     $savings = max(0, $total_size - $final_size);
 | |
|     $compression_ratio = $total_size > 0 ? (($savings / $total_size) * 100) : 0;
 | |
|     
 | |
|     echo "\n=== Consolidation Complete ===\n";
 | |
|     echo "Files processed: $files_processed\n";
 | |
|     echo "Original total size: " . number_format($total_size) . " bytes\n";
 | |
|     echo "Consolidated size: " . number_format($final_size) . " bytes\n";
 | |
|     echo "Space savings: " . number_format($savings) . " bytes (" . number_format($compression_ratio, 1) . "%)\n";
 | |
|     echo "Output file: $output_file\n";
 | |
|     
 | |
|     return true;
 | |
| }
 | |
| 
 | |
| // Main execution
 | |
| echo "Starting CSS consolidation...\n\n";
 | |
| 
 | |
| // Consolidate core files
 | |
| $all_files = array_merge($core_files, $common_files);
 | |
| $success = consolidate_css_files($css_dir, $all_files, $consolidated_file);
 | |
| 
 | |
| if ($success) {
 | |
|     echo "\nCSS consolidation completed successfully!\n";
 | |
|     echo "To use consolidated CSS, ensure no HVAC_CSS_DEBUG constant is defined.\n";
 | |
|     echo "The system will automatically detect and use the consolidated file.\n";
 | |
| } else {
 | |
|     echo "\nCSS consolidation failed!\n";
 | |
|     exit(1);
 | |
| } |