之前给客户做了个网站,其中有这么一个功能:

文章内容中,有指向某个图片的链接,链接内容为图片名称(文字),点击之后在页面上弹出该图片显示,图片可以为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 引擎如此不堪?的更多相关文章

  1. IE8的 JS 引擎如此不堪(二) - 解决方案

    上一篇,IE8的JS引擎内存不停增长,是因为动态生成了一个image对象导致的.有了病因,就开始寻找治疗方法. 1.使用一个固定的img对象,但是无法获取地址改变后的图片大小,最总还是放弃: 2.寻找 ...

  2. JS引擎线程的执行过程的三个阶段(二)

    继续JS引擎线程的执行过程的三个阶段(一) 内容, 如下: 三. 执行阶段 1. 网页的线程 永远只有JS引擎线程在执行JS脚本程序,其他三个线程只负责将满足触发条件的处理函数推进事件队列,等待JS引 ...

  3. 浏览器内核、排版引擎、js引擎

    [定义] 浏览器最重要或者说核心的部分是“Rendering Engine”,可大概译为“渲染引擎”,不过我们一般习惯将之称为“浏览器内核”.负责对网页语法的解释(如标准通用标记语 言下的一个应用HT ...

  4. 【JS】js引擎执行过程

    概述 js引擎执行过程主要分为三个阶段,分别是语法分析,预编译和执行阶段,上篇文章我们介绍了语法分析和预编译阶段,那么我们先做个简单概括,如下: 语法分析: 分别对加载完成的代码块进行语法检验,语法正 ...

  5. (转载)js引擎的执行过程(二)

    概述 js引擎执行过程主要分为三个阶段,分别是语法分析,预编译和执行阶段,上篇文章我们介绍了语法分析和预编译阶段,那么我们先做个简单概括,如下: 语法分析: 分别对加载完成的代码块进行语法检验,语法正 ...

  6. 判断js引擎是javascriptCore或者v8

    来由   纯粹的无聊,一直在搜索JavaScriptCore和SpiderMonkey的一些信息,却无意中学习了如何在ios的UIWebView中判断其js解析引擎的方法: if (window.de ...

  7. 【repost】浏览器内核、渲染引擎、js引擎

    [1]定义 浏览器内核分成两部分渲染引擎和js引擎,由于js引擎越来越独立,内核就倾向于只指渲染引擎 渲染引擎是一种对HTML文档进行解析并将其显示在页面上的工具[2]常见引擎 渲染引擎: firef ...

  8. 浏览器内核、渲染引擎、js引擎

    [1]定义 浏览器内核分成两部分渲染引擎和js引擎,由于js引擎越来越独立,内核就倾向于只指渲染引擎 渲染引擎是一种对HTML文档进行解析并将其显示在页面上的工具 [2]常见引擎 渲染引擎: fire ...

  9. 【转】浏览器内核、渲染引擎、js引擎

    [1]定义 浏览器内核分成两部分渲染引擎和js引擎,由于js引擎越来越独立,内核就倾向于只指渲染引擎 渲染引擎是一种对HTML文档进行解析并将其显示在页面上的工具[2]常见引擎 渲染引擎: firef ...

随机推荐

  1. VisualStudio2010项目转换为VisualStudio2005项目:解决方案和工程项目文件转换方法(2)

    因为我现在不喜欢把一篇博客写的很长很长,这篇博客是接着上一篇博客来写的.上一篇文章我很详细的说明了修改项目文件解决方案的过程.这篇文章我就说说项目中的项目文件该怎么修改.因为我平日里主要做的是ASP. ...

  2. [CF1019A]Elections

    题目大意:有$n$个人,$m$个政党,每个人都想投一个政党,但可以用一定的钱让他选你想让他选的政党. 现在要$1$号政党获胜,获胜的条件是:票数严格大于其他所有政党.求最小代价 题解:暴力枚举其他政党 ...

  3. [BZOJ 2438] [中山市选2011]杀人游戏 Tarjan缩点

    这个题很容易想到正解就是缩点找入度为零的点,那么我们考虑一种特殊情况就是,一个入度为零的点我们不访问他就知道他是不是凶手,那么这样的话就是:I. 他是一个真·孤立的点 II. 他在图里但是在他的强联通 ...

  4. 文件格式转换神器-pandoc

    By francis_hao    Mar 11,2017 介绍 如果你需要在各种类型的文件中穿梭,那么你需要这把瑞士军刀-pandoc 它可以将各种常见的不常见的文件类型转换成另一种,我感兴趣的是在 ...

  5. sqlplus 几个命令:

    sqlplus 几个命令: 在sys,system,sysman,scott四个用户权限中,scott用户最低. 其权限依次从高到低. cmd进入sqlplus sqlplus 登录命令: 登录sys ...

  6. 如何取消PPT中的动画效果

    幻灯片放映——>设置放映式——>勾选放映时不加动画 (office2007)

  7. bzoj 2525 [Poi2011]Dynamite 二分+树形dp

    [Poi2011]Dynamite Time Limit: 30 Sec  Memory Limit: 128 MBSubmit: 270  Solved: 138[Submit][Status][D ...

  8. The base command for the Docker CLI.

    Description The base command for the Docker CLI. Child commands Command Description docker attach At ...

  9. border-image

    一.border-image的兼容性 border-image可以说是CSS3中的一员大将,将来一定会大放光彩,其应用潜力真的是非常的惊人.可惜目前支持的浏览器有限,仅 Firefox3.5,chro ...

  10. CSS3学习笔记之径向展开菜单

    效果截图: HTML代码: <div class="menu-wrap"> <nav> <a href="" class=&quo ...