您现在的位置: 365建站网 > 365学习 > 防假死,多线程,以及在自制浏览器中的实现

防假死,多线程,以及在自制浏览器中的实现

文章来源:365jz.com     点击数:120    更新时间:2012-05-21 19:27   参与评论

“假死”、“防假死”是我们在使用浏览器的过程中提及次数非常多的两个词汇。那么,到底什么是“假死”,“防假死”的原理又是什么呢?今天就让我们来谈谈有关“假死”的话题。

首先从概念上来解释一下。传说中的浏览器假死如洪水猛兽,人人遇而避之,万不得已只得祭出任务管理器大法。最近“假死”这个词汇大有被妖魔化的趋势——其实没有那么多玄机。“假死”只是通俗的说法,比较准确的说法是,在网页装载或者运行的过程中,多种原因造成浏览器响应变慢,甚至无法操作的状态。所以,“假死”并不是一个特定的BUG,仅仅是复杂的网络环境造成的浏览器不稳定状态。

那么,假死是什么原因造成的?我们总结了这样几点:
1、网页代码比较复杂:
浏览器在处理过程中会占用大量的CPU使用率和内存、造成浏览器甚至电脑失去响应;
2、网页代码有bug:
大量个人网站和低质量网站代码的涌现造成对浏览标注的普遍不支持,浏览器渲染引擎在处理这些网页代码的时候会出错,比如陷入死循环等;
3、网页数据过多:
网页含有大量需要处理的数据,造成系统繁忙,如多图页面,超长页面等;
4、网页控件数据过多:
网页内嵌的各种控件会导致浏览器处理大量数据,造成系统繁忙。如Flash游戏,ActiveX控件等。
在以上情况下,如果浏览器框架设计未考虑多页面浏览的特殊性,资源共享访问时未做适当优化,就可能会造成整个浏览器因为单个页面的处理响应过慢而变慢。

测试页:http://www1.pconline.com.cn/pcedu/specialtopic/maxthon25/freeze/index.htm

通常的防假死技术有哪些?各有何优劣呢?
1、多线程技术:
这种技术把网页放到独立的线程中执行,如Maxthon2.5.1之前的版本。这种技术会使浏览器占用的系统资源相对较少。
2、多进程技术:
IE8、Chrome采用的技术,把页面放到独立的进程中执行。
@ 以上两种技术都是通过进程,线程模型来解决,对JavaScript等代码造成的假死效果比较好,但对于Flash等控件造成的假死效果不理想。
线程和进程有何区别?简而言之,一个程序占用一个进程,而每个进程中会有多个线程。一个进程中的线程可能会互相影响或影响整个进程,而不同的进程彼此之间就不会有太大影响。

Maxthon2.5.1版本加入了防假死技术,是上面的那一种?
Maxthon2.5.1之前的版本采用的就是多线程技术,把页面放到独立的线程中执行。Maxthon2.5.1版本采用页面分离技术,这种技术通过把页面和整个浏览器的主体UI分离开,来解决假死,能比较好的处理Flash等控件造成的问题。但这种方式比较复杂,造成的很多小问题也不少,需要长期的优化。

浏览器假死、崩溃、卡死等问题是一个普遍且复杂的问题。针对这样的情况我们不能指望通过一个技术就可以多快好省的解决,因而这必然是一个逐步优化的过程。随着网络应用的越来越复杂,新的挑战一定也会越来越多。比如几年前不存在视频播放网站,现在就非常的多,这些都给浏览器提出了新的挑战。傲游会加大研发力度,力求给大家带来更好的浏览体验。:)

如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛


发表评论 (120人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码: 点击我更换图片
最新评论
------分隔线----------------------------