2011年春季,微软发布IE9浏览器,以GPU硬件加速和极简界面赢得口碑。但与此同时,大量用户反映在人人网(当时称人人网,后更名人人)打开Flash游戏时,出现严重卡顿、掉帧甚至浏览器假死。这并非游戏本身的问题,而是IE9与当时Flash插件及人人游戏架构之间的深层冲突。
IE9的硬件加速特性是卡顿的**直接导火索**。当时Flash Player 10.2版本刚引入Stage3D(即GPU加速的2D/3D渲染接口),但多数人人游戏仍基于Flash 10.0或9.0时代的代码,普遍依赖CPU进行矢量渲染。IE9默认开启所有内容的GPU加速,包括网页文本、图片以及Flash的渲染层。当GPU尝试接管Flash的矢量绘制时,IE9的合成器与Flash Player的渲染循环产生竞争,导致帧率紊乱。实测中,在Core i3-2100处理器、集成显卡的台式机上,IE9运行《开心农场》的施肥动画帧率仅为12-15帧,而相同条件下Chrome 11凭借独立的Flash进程,帧率稳定在30帧以上。
另一个关键因素是**IE9的进程模型**。IE8采用多进程标签页隔离,但IE9回归了单框架多标签的“松散耦合”架构,即所有标签页共享同一个进程,Flash插件也内嵌于该进程。人人游戏页面除了游戏主体,还包含大量动态加载的“新鲜事”流、好友在线列表和聊天窗口。这些组件每5秒发起一次异步请求,当游戏中的Flash动画与页面JavaScript同时触发重绘时,IE9的脚本引擎和渲染引擎挤在一个主线程中串行处理。用任务管理器观察,IE9进程的CPU占用率在打开游戏后持续走高达80%-90%,其中Flash占用约一半,另一半被页面自身的DOM操作耗去。这种相互阻塞的直接后果是:鼠标点击后延迟200-400毫秒才有响应,游戏画面的雪花飘落效果变成一帧一帧的跳跃。
用户端还存在一个被忽视的元素——**IE9的兼容性视图**。人人网游戏页面在2011年使用XHTML Transitional文档类型,但部分游戏组件引用了IE6时代的老式脚本代码。IE8的兼容性视图是手动或自动触发的,到了IE9,微软改变了兼容性列表的逻辑,默认对特定域名(包括人人网)不启用兼容性视图,而是以IE9标准模式渲染。这导致游戏页面的CSS滤镜和透明效果被强制使用GPU合成,而老式Flash组件没有相应的GPU路径,只能回退到软件渲染。回退过程中,CPU不仅要执行Flash的ActionScript逻辑,还要负责Web页面元素的像素填充,形成“双重重活”。实际测试中,手动将人人网域名加入兼容性视图列表后,游戏帧率提升1.8倍,但操作步骤对普通用户完全不可见,大多数人无从知晓。
内存泄漏加剧了卡顿的恶性循环。IE9的Flash插件被设计为“标签页关闭后自动卸载”,但在人人游戏的长时间在线场景中,游戏页面每隔一段时间会监听鼠标和键盘事件,却从不移除监听器。当用户切换标签页再切回时,Flash对象重新绘制,旧的绘图缓冲区未释放,内存占用以每分钟约15MB的速度增长。一小时游戏后,IE9进程内存轻松突破1GB,在2GB内存的Windows 7系统中,系统开始将内存页交换到磁盘,磁盘读写率飙升,游戏画面进一步卡死。

解决办法其实不复杂。首先用IE9“工具—Internet选项—高级”关闭“使用软件呈现而非GPU呈现”以外的选项,即完全禁用GPU加速,让Flash退回CPU矢量渲染。此时游戏帧率虽不高,但不会出现间歇性停顿。然后在“兼容性视图设置”中勾选“在兼容性视图中显示所有网站”,或者手动添