You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

762 lines
31 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
/**
* HTML Compression WordPress Integration
* WordPress HTML压缩功能集成
*
* @package Nenghui Energy Theme
* @since 1.0.0
*/
// 防止直接访问
if (!defined('ABSPATH')) {
exit;
}
// 引入HTML压缩核心类
require_once get_template_directory() . '/inc/html-compressor.php';
class NenghuiHTMLCompressionIntegration {
/**
* HTML压缩器实例
*/
private $compressor;
/**
* 压缩统计数据
*/
private $compression_stats = array();
/**
* 是否启用压缩
*/
private $compression_enabled = true;
/**
* 排除压缩的页面
*/
private $excluded_pages = array();
/**
* 构造函数
*/
public function __construct() {
// 初始化HTML压缩器
$this->compressor = new NenghuiHTMLCompressor();
// 设置压缩选项
$this->setupCompressionOptions();
// 初始化WordPress钩子
$this->initHooks();
}
/**
* 设置压缩选项
*/
private function setupCompressionOptions() {
$options = array(
'remove_comments' => get_theme_mod('nenghui_compression_remove_comments', true),
'remove_whitespace' => get_theme_mod('nenghui_compression_remove_whitespace', true),
'compress_css' => get_theme_mod('nenghui_compression_compress_css', true),
'compress_js' => get_theme_mod('nenghui_compression_compress_js', true),
'preserve_line_breaks' => get_theme_mod('nenghui_compression_preserve_line_breaks', false),
'preserve_pre_content' => true,
'preserve_textarea_content' => true,
'preserve_script_content' => true,
'preserve_style_content' => true
);
$this->compressor->setOptions($options);
// 设置是否启用压缩
$this->compression_enabled = get_theme_mod('nenghui_compression_enabled', true);
// 设置排除的页面
$excluded_pages = get_theme_mod('nenghui_compression_excluded_pages', '');
if (!empty($excluded_pages)) {
$this->excluded_pages = array_map('trim', explode(',', $excluded_pages));
}
}
/**
* 初始化WordPress钩子
*/
private function initHooks() {
// 只在前端启用压缩
if (!is_admin() && $this->compression_enabled) {
add_action('template_redirect', array($this, 'startOutputBuffering'), 1);
add_action('wp_footer', array($this, 'addCompressionStats'), 999);
}
// 添加自定义器选项
add_action('customize_register', array($this, 'addCustomizerOptions'));
// 添加管理员菜单
add_action('admin_menu', array($this, 'addAdminMenu'));
// 添加AJAX处理
add_action('wp_ajax_nenghui_test_compression', array($this, 'testCompression'));
add_action('wp_ajax_nenghui_clear_compression_cache', array($this, 'clearCompressionCache'));
}
/**
* 开始输出缓冲
*/
public function startOutputBuffering() {
// 检查是否应该排除当前页面
if ($this->shouldExcludePage()) {
return;
}
// 检查是否为AJAX请求
if (defined('DOING_AJAX') && DOING_AJAX) {
return;
}
// 检查是否为REST API请求
if (defined('REST_REQUEST') && REST_REQUEST) {
return;
}
// 开始输出缓冲
ob_start(array($this, 'compressOutput'));
}
/**
* 压缩输出内容
*
* @param string $buffer
* @return string
*/
public function compressOutput($buffer) {
// 检查缓冲区是否为空
if (empty($buffer)) {
return $buffer;
}
// 检查是否为HTML内容
if (!$this->isHTMLContent($buffer)) {
return $buffer;
}
// 记录原始大小
$original_size = strlen($buffer);
try {
// 执行压缩
$compressed_buffer = $this->compressor->compress($buffer);
// 记录压缩统计
$this->compression_stats = $this->compressor->getCompressionStats($buffer, $compressed_buffer);
// 添加压缩信息注释(仅在开发模式下)
if (defined('WP_DEBUG') && WP_DEBUG) {
$compressed_buffer = $this->addCompressionComment($compressed_buffer);
}
return $compressed_buffer;
} catch (Exception $e) {
// 压缩失败时返回原始内容
error_log('Nenghui HTML Compression Error: ' . $e->getMessage());
return $buffer;
}
}
/**
* 检查是否应该排除当前页面
*
* @return bool
*/
private function shouldExcludePage() {
global $wp;
// 获取当前页面URL
$current_url = home_url($wp->request);
// 检查排除列表
foreach ($this->excluded_pages as $excluded_page) {
if (strpos($current_url, $excluded_page) !== false) {
return true;
}
}
// 检查特殊页面
if (is_feed() || is_robots() || is_trackback()) {
return true;
}
// 检查XML内容
if (strpos($_SERVER['REQUEST_URI'], '.xml') !== false) {
return true;
}
return false;
}
/**
* 检查是否为HTML内容
*
* @param string $buffer
* @return bool
*/
private function isHTMLContent($buffer) {
// 检查内容类型
$headers = headers_list();
foreach ($headers as $header) {
if (stripos($header, 'content-type') !== false) {
if (stripos($header, 'text/html') === false) {
return false;
}
break;
}
}
// 检查是否包含HTML标签
return preg_match('/<html|<head|<body|<!DOCTYPE/i', $buffer);
}
/**
* 添加压缩信息注释
*
* @param string $buffer
* @return string
*/
private function addCompressionComment($buffer) {
if (!empty($this->compression_stats)) {
$comment = sprintf(
"\n<!-- Nenghui HTML Compression: Original: %s bytes, Compressed: %s bytes, Saved: %s bytes (%.2f%%) -->",
number_format($this->compression_stats['original_size']),
number_format($this->compression_stats['compressed_size']),
number_format($this->compression_stats['saved_bytes']),
$this->compression_stats['compression_ratio']
);
// 在</body>标签前插入注释
$buffer = str_replace('</body>', $comment . "\n</body>", $buffer);
}
return $buffer;
}
/**
* 添加压缩统计信息到页面底部
*/
public function addCompressionStats() {
if (defined('WP_DEBUG') && WP_DEBUG && !empty($this->compression_stats)) {
echo '<script>';
echo 'console.log("Nenghui HTML Compression Stats:", ' . json_encode($this->compression_stats) . ');';
echo '</script>';
}
}
/**
* 添加自定义器选项
*
* @param WP_Customize_Manager $wp_customize
*/
public function addCustomizerOptions($wp_customize) {
// 添加压缩设置面板
$wp_customize->add_panel('nenghui_performance_panel', array(
'title' => __('性能优化', 'nenghui-energy-theme'),
'description' => __('网站性能优化相关设置', 'nenghui-energy-theme'),
'priority' => 160,
));
// 添加HTML压缩设置部分
$wp_customize->add_section('nenghui_compression_settings', array(
'title' => __('HTML压缩设置', 'nenghui-energy-theme'),
'description' => __('通过压缩HTML代码来提升网站加载速度', 'nenghui-energy-theme'),
'panel' => 'nenghui_performance_panel',
'priority' => 10,
));
// 启用压缩 - 主开关
$wp_customize->add_setting('nenghui_compression_enabled', array(
'default' => true,
'sanitize_callback' => 'wp_validate_boolean',
'transport' => 'refresh',
));
$wp_customize->add_control('nenghui_compression_enabled', array(
'label' => __('启用HTML压缩', 'nenghui-energy-theme'),
'description' => __('开启后将自动压缩HTML输出显著减少页面大小并提升加载速度', 'nenghui-energy-theme'),
'section' => 'nenghui_compression_settings',
'type' => 'checkbox',
'priority' => 10,
));
// 添加分隔符
$wp_customize->add_setting('nenghui_compression_separator_1', array(
'sanitize_callback' => 'wp_kses_post',
));
$wp_customize->add_control(new WP_Customize_Control($wp_customize, 'nenghui_compression_separator_1', array(
'type' => 'hidden',
'section' => 'nenghui_compression_settings',
'priority' => 15,
)));
// 移除注释
$wp_customize->add_setting('nenghui_compression_remove_comments', array(
'default' => true,
'sanitize_callback' => 'wp_validate_boolean',
));
$wp_customize->add_control('nenghui_compression_remove_comments', array(
'label' => __('移除HTML注释', 'nenghui-energy-theme'),
'description' => __('移除HTML中的注释内容。注意某些插件可能依赖HTML注释', 'nenghui-energy-theme'),
'section' => 'nenghui_compression_settings',
'type' => 'checkbox',
'priority' => 20,
'active_callback' => function() {
return get_theme_mod('nenghui_compression_enabled', true);
},
));
// 移除空白字符
$wp_customize->add_setting('nenghui_compression_remove_whitespace', array(
'default' => true,
'sanitize_callback' => 'wp_validate_boolean',
));
$wp_customize->add_control('nenghui_compression_remove_whitespace', array(
'label' => __('压缩空白字符', 'nenghui-energy-theme'),
'description' => __('移除多余的空格、制表符和换行符,保留必要的空白字符', 'nenghui-energy-theme'),
'section' => 'nenghui_compression_settings',
'type' => 'checkbox',
'priority' => 30,
'active_callback' => function() {
return get_theme_mod('nenghui_compression_enabled', true);
},
));
// 压缩CSS
$wp_customize->add_setting('nenghui_compression_compress_css', array(
'default' => true,
'sanitize_callback' => 'wp_validate_boolean',
));
$wp_customize->add_control('nenghui_compression_compress_css', array(
'label' => __('压缩内联CSS', 'nenghui-energy-theme'),
'description' => __('压缩&lt;style&gt;标签内的CSS代码移除注释和多余空白', 'nenghui-energy-theme'),
'section' => 'nenghui_compression_settings',
'type' => 'checkbox',
'priority' => 40,
'active_callback' => function() {
return get_theme_mod('nenghui_compression_enabled', true);
},
));
// 压缩JavaScript
$wp_customize->add_setting('nenghui_compression_compress_js', array(
'default' => true,
'sanitize_callback' => 'wp_validate_boolean',
));
$wp_customize->add_control('nenghui_compression_compress_js', array(
'label' => __('压缩内联JavaScript', 'nenghui-energy-theme'),
'description' => __('压缩&lt;script&gt;标签内的JavaScript代码移除注释和多余空白', 'nenghui-energy-theme'),
'section' => 'nenghui_compression_settings',
'type' => 'checkbox',
'priority' => 50,
'active_callback' => function() {
return get_theme_mod('nenghui_compression_enabled', true);
},
));
// 添加分隔符
$wp_customize->add_setting('nenghui_compression_separator_2', array(
'sanitize_callback' => 'wp_kses_post',
));
$wp_customize->add_control(new WP_Customize_Control($wp_customize, 'nenghui_compression_separator_2', array(
'type' => 'hidden',
'section' => 'nenghui_compression_settings',
'priority' => 55,
)));
// 排除页面
$wp_customize->add_setting('nenghui_compression_excluded_pages', array(
'default' => 'wp-admin,wp-login,xmlrpc',
'sanitize_callback' => 'sanitize_textarea_field',
));
$wp_customize->add_control('nenghui_compression_excluded_pages', array(
'label' => __('排除的页面', 'nenghui-energy-theme'),
'description' => __('输入不需要压缩的页面URL片段用逗号分隔。例如wp-admin, wp-login, xmlrpc', 'nenghui-energy-theme'),
'section' => 'nenghui_compression_settings',
'type' => 'textarea',
'priority' => 60,
'active_callback' => function() {
return get_theme_mod('nenghui_compression_enabled', true);
},
));
// 添加性能提示部分
$wp_customize->add_section('nenghui_performance_tips', array(
'title' => __('性能优化建议', 'nenghui-energy-theme'),
'description' => __('其他提升网站性能的建议和技巧', 'nenghui-energy-theme'),
'panel' => 'nenghui_performance_panel',
'priority' => 20,
));
// 性能提示内容
$wp_customize->add_setting('nenghui_performance_tips_content', array(
'default' => '',
'sanitize_callback' => 'wp_kses_post',
));
$wp_customize->add_control(new WP_Customize_Control($wp_customize, 'nenghui_performance_tips_content', array(
'label' => __('性能优化提示', 'nenghui-energy-theme'),
'description' => __('
<div style="background: #f0f8ff; padding: 15px; border-radius: 5px; margin: 10px 0;">
<h4 style="margin-top: 0;">💡 性能优化建议:</h4>
<ul style="margin: 0; padding-left: 20px;">
<li>启用HTML压缩可减少20-40%的页面大小</li>
<li>建议同时使用缓存插件以获得最佳效果</li>
<li>定期检查压缩统计以监控性能提升</li>
<li>在生产环境中测试所有功能正常工作</li>
</ul>
<p style="margin-bottom: 0;"><strong>注意:</strong>某些插件可能与HTML压缩冲突如遇问题请在排除页面中添加相关URL。</p>
</div>
', 'nenghui-energy-theme'),
'section' => 'nenghui_performance_tips',
'type' => 'hidden',
)));
}
/**
* 添加管理员菜单
*/
public function addAdminMenu() {
add_theme_page(
__('HTML压缩设置', 'nenghui-energy-theme'),
__('HTML压缩', 'nenghui-energy-theme'),
'manage_options',
'nenghui-html-compression',
array($this, 'adminPage')
);
}
/**
* 管理员页面
*/
public function adminPage() {
// 处理表单提交
if (isset($_POST['submit']) && wp_verify_nonce($_POST['compression_nonce'], 'save_compression_settings')) {
$this->saveSettings();
echo '<div class="notice notice-success is-dismissible"><p>' . __('设置已保存!', 'nenghui-energy-theme') . '</p></div>';
}
// 获取当前设置
$settings = $this->getCurrentSettings();
?>
<div class="wrap">
<h1><?php _e('HTML压缩设置', 'nenghui-energy-theme'); ?></h1>
<form method="post" action="">
<?php wp_nonce_field('save_compression_settings', 'compression_nonce'); ?>
<div class="card">
<h2><?php _e('基本设置', 'nenghui-energy-theme'); ?></h2>
<table class="form-table">
<tr>
<th scope="row"><?php _e('启用HTML压缩', 'nenghui-energy-theme'); ?></th>
<td>
<label>
<input type="checkbox" name="compression_enabled" value="1" <?php checked($settings['compression_enabled']); ?>>
<?php _e('启用HTML压缩功能以提升网站性能', 'nenghui-energy-theme'); ?>
</label>
<p class="description"><?php _e('启用后将自动压缩HTML输出减少页面大小', 'nenghui-energy-theme'); ?></p>
</td>
</tr>
<tr>
<th scope="row"><?php _e('移除HTML注释', 'nenghui-energy-theme'); ?></th>
<td>
<label>
<input type="checkbox" name="remove_comments" value="1" <?php checked($settings['remove_comments']); ?>>
<?php _e('移除HTML中的注释内容', 'nenghui-energy-theme'); ?>
</label>
<p class="description"><?php _e('注意某些插件可能依赖HTML注释请谨慎使用', 'nenghui-energy-theme'); ?></p>
</td>
</tr>
<tr>
<th scope="row"><?php _e('压缩空白字符', 'nenghui-energy-theme'); ?></th>
<td>
<label>
<input type="checkbox" name="remove_whitespace" value="1" <?php checked($settings['remove_whitespace']); ?>>
<?php _e('移除多余的空格、制表符和换行符', 'nenghui-energy-theme'); ?>
</label>
<p class="description"><?php _e('保留必要的空白字符,确保页面正常显示', 'nenghui-energy-theme'); ?></p>
</td>
</tr>
<tr>
<th scope="row"><?php _e('压缩内联CSS', 'nenghui-energy-theme'); ?></th>
<td>
<label>
<input type="checkbox" name="compress_css" value="1" <?php checked($settings['compress_css']); ?>>
<?php _e('压缩&lt;style&gt;标签内的CSS代码', 'nenghui-energy-theme'); ?>
</label>
<p class="description"><?php _e('移除CSS注释和多余空白减少样式表大小', 'nenghui-energy-theme'); ?></p>
</td>
</tr>
<tr>
<th scope="row"><?php _e('压缩内联JavaScript', 'nenghui-energy-theme'); ?></th>
<td>
<label>
<input type="checkbox" name="compress_js" value="1" <?php checked($settings['compress_js']); ?>>
<?php _e('压缩&lt;script&gt;标签内的JavaScript代码', 'nenghui-energy-theme'); ?>
</label>
<p class="description"><?php _e('移除JS注释和多余空白减少脚本大小', 'nenghui-energy-theme'); ?></p>
</td>
</tr>
<tr>
<th scope="row"><?php _e('排除页面', 'nenghui-energy-theme'); ?></th>
<td>
<textarea name="excluded_pages" rows="3" cols="50" class="large-text"><?php echo esc_textarea($settings['excluded_pages']); ?></textarea>
<p class="description"><?php _e('输入不需要压缩的页面URL片段每行一个。例如wp-admin, wp-login, xmlrpc', 'nenghui-energy-theme'); ?></p>
</td>
</tr>
</table>
<?php submit_button(__('保存设置', 'nenghui-energy-theme')); ?>
</div>
</form>
<div class="card">
<h2><?php _e('压缩状态', 'nenghui-energy-theme'); ?></h2>
<div class="compression-status">
<?php $this->displayCompressionStatus(); ?>
</div>
</div>
<div class="card">
<h2><?php _e('压缩测试', 'nenghui-energy-theme'); ?></h2>
<p><?php _e('测试HTML压缩功能的效果', 'nenghui-energy-theme'); ?></p>
<button id="test-compression" class="button button-primary"><?php _e('测试压缩', 'nenghui-energy-theme'); ?></button>
<div id="compression-test-result" style="margin-top: 15px;"></div>
</div>
<div class="card">
<h2><?php _e('压缩统计', 'nenghui-energy-theme'); ?></h2>
<p><?php _e('查看最近的压缩统计信息', 'nenghui-energy-theme'); ?></p>
<div id="compression-stats">
<?php $this->displayCompressionStats(); ?>
</div>
</div>
<div class="card">
<h2><?php _e('缓存管理', 'nenghui-energy-theme'); ?></h2>
<p><?php _e('清除压缩相关的缓存', 'nenghui-energy-theme'); ?></p>
<button id="clear-cache" class="button"><?php _e('清除缓存', 'nenghui-energy-theme'); ?></button>
</div>
</div>
<script>
jQuery(document).ready(function($) {
$('#test-compression').click(function() {
var button = $(this);
button.prop('disabled', true).text('<?php _e('测试中...', 'nenghui-energy-theme'); ?>');
$.ajax({
url: ajaxurl,
type: 'POST',
data: {
action: 'nenghui_test_compression',
nonce: '<?php echo wp_create_nonce('nenghui_compression_test'); ?>'
},
success: function(response) {
$('#compression-test-result').html(response.data);
},
complete: function() {
button.prop('disabled', false).text('<?php _e('测试压缩', 'nenghui-energy-theme'); ?>');
}
});
});
$('#clear-cache').click(function() {
var button = $(this);
button.prop('disabled', true).text('<?php _e('清除中...', 'nenghui-energy-theme'); ?>');
$.ajax({
url: ajaxurl,
type: 'POST',
data: {
action: 'nenghui_clear_compression_cache',
nonce: '<?php echo wp_create_nonce('nenghui_compression_clear'); ?>'
},
success: function(response) {
alert(response.data);
},
complete: function() {
button.prop('disabled', false).text('<?php _e('清除缓存', 'nenghui-energy-theme'); ?>');
}
});
});
});
</script>
<?php
}
/**
* 保存设置
*/
private function saveSettings() {
$settings = array(
'nenghui_compression_enabled' => isset($_POST['compression_enabled']) ? true : false,
'nenghui_compression_remove_comments' => isset($_POST['remove_comments']) ? true : false,
'nenghui_compression_remove_whitespace' => isset($_POST['remove_whitespace']) ? true : false,
'nenghui_compression_compress_css' => isset($_POST['compress_css']) ? true : false,
'nenghui_compression_compress_js' => isset($_POST['compress_js']) ? true : false,
'nenghui_compression_excluded_pages' => sanitize_textarea_field($_POST['excluded_pages'])
);
foreach ($settings as $key => $value) {
set_theme_mod($key, $value);
}
// 重新设置压缩选项
$this->setupCompressionOptions();
}
/**
* 获取当前设置
*/
private function getCurrentSettings() {
return array(
'compression_enabled' => get_theme_mod('nenghui_compression_enabled', true),
'remove_comments' => get_theme_mod('nenghui_compression_remove_comments', true),
'remove_whitespace' => get_theme_mod('nenghui_compression_remove_whitespace', true),
'compress_css' => get_theme_mod('nenghui_compression_compress_css', true),
'compress_js' => get_theme_mod('nenghui_compression_compress_js', true),
'excluded_pages' => get_theme_mod('nenghui_compression_excluded_pages', 'wp-admin,wp-login,xmlrpc')
);
}
/**
* 显示压缩状态
*/
private function displayCompressionStatus() {
$settings = $this->getCurrentSettings();
$status_class = $settings['compression_enabled'] ? 'notice-success' : 'notice-warning';
$status_text = $settings['compression_enabled'] ? __('已启用', 'nenghui-energy-theme') : __('已禁用', 'nenghui-energy-theme');
echo '<div class="notice ' . $status_class . ' inline">';
echo '<p><strong>' . __('压缩状态:', 'nenghui-energy-theme') . '</strong>' . $status_text . '</p>';
echo '</div>';
if ($settings['compression_enabled']) {
echo '<ul>';
echo '<li>' . ($settings['remove_comments'] ? '✅' : '❌') . ' ' . __('移除HTML注释', 'nenghui-energy-theme') . '</li>';
echo '<li>' . ($settings['remove_whitespace'] ? '✅' : '❌') . ' ' . __('压缩空白字符', 'nenghui-energy-theme') . '</li>';
echo '<li>' . ($settings['compress_css'] ? '✅' : '❌') . ' ' . __('压缩内联CSS', 'nenghui-energy-theme') . '</li>';
echo '<li>' . ($settings['compress_js'] ? '✅' : '❌') . ' ' . __('压缩内联JavaScript', 'nenghui-energy-theme') . '</li>';
echo '</ul>';
if (!empty($settings['excluded_pages'])) {
echo '<p><strong>' . __('排除的页面:', 'nenghui-energy-theme') . '</strong></p>';
$excluded = array_map('trim', explode(',', $settings['excluded_pages']));
echo '<ul>';
foreach ($excluded as $page) {
if (!empty($page)) {
echo '<li>' . esc_html($page) . '</li>';
}
}
echo '</ul>';
}
}
}
/**
* 显示压缩统计信息
*/
private function displayCompressionStats() {
$stats = get_option('nenghui_compression_stats', array());
if (empty($stats)) {
echo '<p>' . __('暂无压缩统计数据', 'nenghui-energy-theme') . '</p>';
return;
}
echo '<table class="wp-list-table widefat fixed striped">';
echo '<thead><tr>';
echo '<th>' . __('时间', 'nenghui-energy-theme') . '</th>';
echo '<th>' . __('原始大小', 'nenghui-energy-theme') . '</th>';
echo '<th>' . __('压缩后大小', 'nenghui-energy-theme') . '</th>';
echo '<th>' . __('节省空间', 'nenghui-energy-theme') . '</th>';
echo '<th>' . __('压缩率', 'nenghui-energy-theme') . '</th>';
echo '</tr></thead><tbody>';
foreach (array_slice($stats, -10) as $stat) {
echo '<tr>';
echo '<td>' . date('Y-m-d H:i:s', $stat['timestamp']) . '</td>';
echo '<td>' . size_format($stat['original_size']) . '</td>';
echo '<td>' . size_format($stat['compressed_size']) . '</td>';
echo '<td>' . size_format($stat['saved_bytes']) . '</td>';
echo '<td>' . $stat['compression_ratio'] . '%</td>';
echo '</tr>';
}
echo '</tbody></table>';
}
/**
* AJAX测试压缩
*/
public function testCompression() {
check_ajax_referer('nenghui_compression_test', 'nonce');
$test_html = '<!DOCTYPE html>
<html>
<head>
<title>Test Page</title>
<style>
body { margin: 0; padding: 20px; }
.container { max-width: 1200px; margin: 0 auto; }
</style>
</head>
<body>
<!-- This is a test comment -->
<div class="container">
<h1>Test Page</h1>
<p>This is a test paragraph with some content.</p>
<script>
console.log("Test script");
var test = "Hello World";
</script>
</div>
</body>
</html>';
$compressed = $this->compressor->compress($test_html);
$stats = $this->compressor->getCompressionStats($test_html, $compressed);
$result = '<div class="notice notice-success"><p><strong>' . __('压缩测试成功!', 'nenghui-energy-theme') . '</strong></p>';
$result .= '<p>' . sprintf(__('原始大小: %s 字节', 'nenghui-energy-theme'), number_format($stats['original_size'])) . '</p>';
$result .= '<p>' . sprintf(__('压缩后大小: %s 字节', 'nenghui-energy-theme'), number_format($stats['compressed_size'])) . '</p>';
$result .= '<p>' . sprintf(__('节省空间: %s 字节 (%.2f%%)', 'nenghui-energy-theme'), number_format($stats['saved_bytes']), $stats['compression_ratio']) . '</p>';
$result .= '</div>';
wp_send_json_success($result);
}
/**
* AJAX清除缓存
*/
public function clearCompressionCache() {
check_ajax_referer('nenghui_compression_clear', 'nonce');
// 清除相关缓存
delete_option('nenghui_compression_stats');
// 清除对象缓存
wp_cache_flush();
wp_send_json_success(__('缓存已清除', 'nenghui-energy-theme'));
}
}
// 初始化HTML压缩集成
new NenghuiHTMLCompressionIntegration();