Files
argon-theme/.kiro/specs/resource-cpu-optimization/docs/RENDER_OPTIMIZER_USAGE.md
nanhaoluo 4515831d7f chore: 清理临时文件和测试文件
- 删除临时测试文件 (test-*.html, test-*.js)
- 删除临时文档文件 (GPU_ACCELERATION_USAGE.md, RENDER_OPTIMIZER_USAGE.md)
- 删除测试 HTML 文件 (argon-memory-manager.test.html, argon-performance.test.html)
- 整理文档到 specs 目录下
2026-01-22 10:42:19 +08:00

2.4 KiB
Raw Permalink Blame History

ArgonRenderOptimizer 使用指南

概述

ArgonRenderOptimizer 类用于优化 DOM 操作性能通过批量读写避免布局抖动Layout Thrashing并提供 GPU 加速管理功能。

核心功能

1. 批量读写 DOM

问题: 频繁交替读写 DOM 会导致浏览器多次重排reflow严重影响性能。

解决方案: 使用 read()write() 方法将操作加入队列,在下一帧统一执行(先读后写)。

2. GPU 加速管理

功能: 通过 will-change 属性提示浏览器创建合成层,利用 GPU 加速动画。

3. 动画数量限制

问题: 同时运行过多动画会导致 CPU 占用过高,影响页面流畅度。

解决方案: 自动限制同时运行的动画数量(默认最多 3 个),超出的动画自动进入等待队列。

使用示例

基础用法

// 创建实例
const optimizer = new ArgonRenderOptimizer();

// 批量读取 DOM 属性
let scrollTop, windowHeight;

optimizer.read(() => {
	scrollTop = document.documentElement.scrollTop;
	windowHeight = window.innerHeight;
});

// 批量写入 DOM
optimizer.write(() => {
	const toolbar = document.querySelector('.navbar');
	if (toolbar) {
		toolbar.style.opacity = scrollTop > 100 ? '1' : '0.8';
	}
});

GPU 加速动画

const element = document.querySelector('.animated-element');

// 使用 startAnimation 方法,自动管理 GPU 加速和动画数量
const started = optimizer.startAnimation(element, (el) => {
	el.style.transform = 'translateX(100px)';
	el.style.transition = 'transform 0.3s ease';
});

// 动画结束后调用 endAnimation
element.addEventListener('transitionend', () => {
	optimizer.endAnimation(element);
}, { once: true });

API 参考

read(readFn) - 批量读取 DOM

write(writeFn) - 批量写入 DOM

enableGPU(element) - 启用 GPU 加速

disableGPU(element) - 禁用 GPU 加速

startAnimation(element, animationFn) - 启动动画

endAnimation(element) - 结束动画

getActiveAnimationCount() - 获取活动动画数量

getQueuedAnimationCount() - 获取队列动画数量

clearAllAnimations() - 清除所有动画

性能优势

批量读写可减少 75% 的重排次数,显著提升性能。

相关需求

  • 需求 2.3, 2.4: 批量读写避免布局抖动
  • 需求 5.2, 5.3, 5.5: GPU 加速和动画限制
  • 需求 17.1, 17.2: 批量操作优化