IE8的 JS 引擎如此不堪?
之前给客户做了个网站,其中有这么一个功能:
文章内容中,有指向某个图片的链接,链接内容为图片名称(文字),点击之后在页面上弹出该图片显示,图片可以为png,jpg,gif等。
于是,祭出了JQuery与JQuery的插件们。弹出图片,用了blockUI,简单易用。
为了获取到图片的大小,借用了 http://www.planeart.cn/?p=1121 再谈javascript图片预加载技术 文中的代码
HTML中,做了最基础的链接,加上一个名为“image” 的css,用来做JQuery的选择器
<a href="image/pic01.jpg" class="image">图片1</a>
Js中如下写:
$(document).ready(function(){ $('a.image').click(function(){
var src = $(this).attr('src');
// 之前在HTML定义了一个 #imgBox 的div作为容器
//
imgReady(src,function(){
var w = this.width ;
var h = this.height ;
$('#imgBox').html('').append($(this));
$.blockUI({
message: $('#imgBox'),
css: {
top: '50%',
left: '50%',
textAlign: 'center',
marginLeft: '-' + (w / 2) + 'px',
marginTop: '-' + (h / 2) + 'px',
width: (parseInt(w) + 30) + 'px',
height: (parseInt(h) + 30) + 'px',
background: 'none'
}
});
$('.blockOverlay').attr('title', '单击关闭').click($.unblockUI);
});
看起来就这么简单,用chrom和ie9测试过后,没有问题就交给了客户。可没过几天,客户反应,这些链接在IE8中点一个1,2次再点就没反应了。仔细检查代码,没发现不妥,遂找来虚拟机开始测试。
1、IE8,第一次点链接,图片很快显示,但点到几次之后,明显越来越慢,打开任务管理器,发现内存飙升很快,不会明显减少;
一个采样数据:启动:4.5MB左右,打开网页:98MB左右
点击链接弹出图片
1次:160MB,关闭后减小到128MB
2次:190MB,关闭后:159MB
3次:220MB,关闭后:189MB
后面就会一直这么上升,响应速度越来越慢..
2、Chrome,点击图片n次,都是OK的,跟了下Chrome的内存占用情况,内存也会小幅增长,但是也会恢复到之前的水平;
[我常用的是Chrome,为了测试,先用IE来编辑博客,要能够CHrome来测试。。]
打开Chrome:居然开了4个进程(xxxx),没搞懂怎么回事,打开同一个网页,然后从 任务管理器中“转到进程”,占用123MB
点击图片
#1 显示图片:转到的进程没什么变化,另外一个进程从 24MB增加到了30MB,关闭图片:30MB的进程减小都25MB
#2 显示图片:跟第一次一样,另外一个进程从24-》30MB,关闭图片,这次30MB的进程没变化
后面经过N次点击,发生变化的进程内存从30-45MB之间波动,弹出图片也很流畅
疑问:难道Chrome的JS引擎是单独一个进程?
3、IE10,使用按键精灵点击若干遍之后,内存依然平稳
IE10,打开之后,2个进程:一个13MB,一个6MB
载入网页:启动了第三个进程?(不是很明白IE10的工作模式),内存108MB
点击弹出图片
#1 内存基本没变,增加了1MB,变成了109MB,其他两个基本没变化,关闭图片:基本没变化
#2 变化依然不大
点击了几十次之后,110MB左右,几乎无波动。
------------------------------------------------------------------------------
注:测试所用的图片很小,分辨率为640*800,JPG
-----------------------------------------------------------------------------
难道IE8的JS引擎就是如此不堪?还是blockUI吃资源太严重?还是我用到的JS代码存在不合理? 还请园子里的朋友帮忙解答..
(未完待续)
IE8的 JS 引擎如此不堪?的更多相关文章
- IE8的 JS 引擎如此不堪(二) - 解决方案
上一篇,IE8的JS引擎内存不停增长,是因为动态生成了一个image对象导致的.有了病因,就开始寻找治疗方法. 1.使用一个固定的img对象,但是无法获取地址改变后的图片大小,最总还是放弃: 2.寻找 ...
- JS引擎线程的执行过程的三个阶段(二)
继续JS引擎线程的执行过程的三个阶段(一) 内容, 如下: 三. 执行阶段 1. 网页的线程 永远只有JS引擎线程在执行JS脚本程序,其他三个线程只负责将满足触发条件的处理函数推进事件队列,等待JS引 ...
- 浏览器内核、排版引擎、js引擎
[定义] 浏览器最重要或者说核心的部分是“Rendering Engine”,可大概译为“渲染引擎”,不过我们一般习惯将之称为“浏览器内核”.负责对网页语法的解释(如标准通用标记语 言下的一个应用HT ...
- 【JS】js引擎执行过程
概述 js引擎执行过程主要分为三个阶段,分别是语法分析,预编译和执行阶段,上篇文章我们介绍了语法分析和预编译阶段,那么我们先做个简单概括,如下: 语法分析: 分别对加载完成的代码块进行语法检验,语法正 ...
- (转载)js引擎的执行过程(二)
概述 js引擎执行过程主要分为三个阶段,分别是语法分析,预编译和执行阶段,上篇文章我们介绍了语法分析和预编译阶段,那么我们先做个简单概括,如下: 语法分析: 分别对加载完成的代码块进行语法检验,语法正 ...
- 判断js引擎是javascriptCore或者v8
来由 纯粹的无聊,一直在搜索JavaScriptCore和SpiderMonkey的一些信息,却无意中学习了如何在ios的UIWebView中判断其js解析引擎的方法: if (window.de ...
- 【repost】浏览器内核、渲染引擎、js引擎
[1]定义 浏览器内核分成两部分渲染引擎和js引擎,由于js引擎越来越独立,内核就倾向于只指渲染引擎 渲染引擎是一种对HTML文档进行解析并将其显示在页面上的工具[2]常见引擎 渲染引擎: firef ...
- 浏览器内核、渲染引擎、js引擎
[1]定义 浏览器内核分成两部分渲染引擎和js引擎,由于js引擎越来越独立,内核就倾向于只指渲染引擎 渲染引擎是一种对HTML文档进行解析并将其显示在页面上的工具 [2]常见引擎 渲染引擎: fire ...
- 【转】浏览器内核、渲染引擎、js引擎
[1]定义 浏览器内核分成两部分渲染引擎和js引擎,由于js引擎越来越独立,内核就倾向于只指渲染引擎 渲染引擎是一种对HTML文档进行解析并将其显示在页面上的工具[2]常见引擎 渲染引擎: firef ...
随机推荐
- javaScript运算符学习笔记
1.赋值运算符 javaScript运算符可以分为简单赋值和复合赋值运算.简单赋值运算是将赋值运算符(=)右边的表达式的值保存到赋值运算符左边的变量中,复合赋值运算则是混合了其他操作(算术运算操作,位 ...
- BZOJ4399 魔法少女LJJ(线段树合并)
注意到只有增加点/合并的操作.这些操作都可以用线段树完成,于是线段树合并一发就好了.注意乘积大小直接比较肯定会炸,取个对数即可.数据中存在重边. #include<iostream> #i ...
- hdu 1787 GCD Again (欧拉函数)
GCD Again Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- 2018-2-6考试(COCI2014/2015 Contest#5)
T1:FUNGHI(1s,32M,50pts)得分:50 题意:给你8个数组成一个环,要你求出其中连续的4个数,让它们的和最大 题解:暴力求出每一连续4个数之和,比较一下就好 标签:模拟 C++ Co ...
- [AHOI2013]作业 & Gty的二逼妹子序列 莫队
---题面--- 题解: 题目要求统计一个区间内数值在[a, b]内的数的个数和种数,而这个是可以用树状数组统计出来的,所以可以考虑莫队. 考虑区间[l, r]转移到[l, r + 1],那么对于维护 ...
- [USACO Hol10] 臭气弹 图上期望概率dp 高斯
记住一开始和后来的经过是两个事件因此概率可以大于一 #include<cstdio> #include<iostream> #include<cstdlib> #i ...
- [MySQL] explain执行计划解读
Explain语法 EXPLAIN SELECT …… 变体: 1. EXPLAIN EXTENDED SELECT …… 将执行计划“反编译”成SELECT语句,运行SHOW WARNINGS 可得 ...
- Educational Codeforces Round 55:A. Vasya and Book
A. Vasya and Book 题目链接:https://codeforc.es/contest/1082/problem/A 题意: 给出n,x,y,d,x是起点,y是终点,d是可以跳的格数,注 ...
- Java 处理 XML 的三种主流技术及介绍
Java 处理 XML 的三种主流技术及介绍 原文地址:https://www.ibm.com/developerworks/cn/xml/dm-1208gub/ XML (eXtensible Ma ...
- 自旋锁、排队自旋锁、MCS锁、CLH锁
转载自:http://coderbee.net/index.php/concurrent/20131115/577 自旋锁(Spin lock) 自旋锁是指当一个线程尝试获取某个锁时,如果该锁已被其他 ...