【发布时间】:2018-10-15 22:16:53
【问题描述】:
我正在使用这个 HTML 模板:http://volar.makwan.net/index02.html
我的许多用户在查看该网站时在他们的笔记本电脑和上网本上遇到了高 CPU 使用率,当他们在网站上停留超过几分钟时,Safari 也会发出此消息:“此网页正在消耗大量能量。关闭它可能会提高 Mac 的响应能力。”
我第一次尝试释放资源是在用户使用以下代码从主屏幕滚动时摆脱平面着色器效果:
window.onscroll = function() {
let home = document.getElementById('home-section');
let effect = document.getElementById('fss');
if(!isElementInViewport(home) && isVisible) {
effect.style.display = "none"
console.log("effects disabled in order conserve resources");
isVisible = false;
} else if(isElementInViewport(home) && !isVisible){
effect.style.display = "block";
isVisible = true;
}
};
这工作得很好,但页面中的其他元素仍然占用大量资源。
有没有人对如何在网站上一段时间的活动后禁用效果/禁用效果有任何建议?
【问题讨论】:
-
可能存在内存泄漏。请参阅调试器的«性能/内存选项卡»。照顾全局变量,不使用时为空变量。 «使用严格» 可以提供帮助。您必须看到垃圾收集器在运行。我让你这样搜索。当然也可能是别的东西,比如永不结束的循环,或者 setIntervals 等。祝你好运!
-
我会在几秒钟后禁用顶部的效果。它不是那么好,所以我希望它以 100% 运行我的 CPU :)
-
@OndraŽižka - 我使用上面发布的 JavaScript 做到了这一点,但它仍然需要大量资源。
-
是否有接近 0 % 不透明度的过滤器?也许在不需要时删除它们。
标签: javascript html css performance effects