[H5]如何减少网页的内存与CPU占用

转载 2016年05月31日 11:46:05

有的网页看起来并不大但打开会很卡,有的网页虽然很长但使用流畅,占用用户电脑的内存与CPU就影响这些。

浏览器问题,有各自的浏览器处理内存问题会影响到,但几乎没办法控制得了,Windows上的:

IE系列,刷新回收的量不大,但最小化会释放内存,。

Firefox2据说也会在最小化回收,可我从没见过最垃圾,用多少是多少,基本不回收。据说prototype的ajax还会引起内存一直增加。

Opera最好。一直控制得很好。不存在什么问题。。

Linux的内存分配机制与Win的不一样,有多少用多少,如果浏览器占光时说不定会干掉系统。

页面问题,浏览器渲染页面会消耗内存和CPU,能减少一点就减少点。

结构上

  使用DocType,告诉浏览器你在用什么,html4也有DTD。也许Transitional更适合你如果使用的是XHTML并能保持良好结构的话,记得输出相应的MIME跟XML头1,可以减少浏览器的代码检查,保持结构的完整,不要让浏览器帮你补全代码。

控制页面的文件大小,可以通过程序把为了看代码比较舒服的缩进去掉。2~3K也是大小。

iframe会产生新的页面,其实有很多方式可以代替iframe引入的JS与CSS可以适当合并,同样背景图片也可以合并,甚至有人连Flash都合并给已知宽高的内容图片/Object加上宽度的属性可以减少页面的局部重渲染

表现上

  质量99跟70的jpg在大多数情况下只有文件有大小不一样。gif的也一样,特别是小图标,256色跟128色的差别是文件大小.

 flash动得太快吃CPU很大,控制每秒的帧数及动画的效果可以减少一些,如果把品质用中低显示会省很多资源,但这样却牺牲了效果。。quality属性 有时选择Autolow2 或者Autohigh会更适合,没必要一直low 或者best,flash使用矢量图会节省文件大小,但计算复杂的图形跟动画时花的是CPU。复杂的太多滤镜,则会占用大量内存,模糊滤镜有减少些3。

  IE的滤镜也是比较占用内存,同时也有兼容性问题。全屏的半透明很吃资源的。2*2的图片跟8*8的图片大小差不多,但是平铺背景2*2却占用大很多。gif动画同样有帧的概念,别把gif当成flash来玩就行。

行为上

  别为了使用一个$()引入整个prototype或jQuery,它们有更多的作用。

  AJAX很帅。但是用xml会用上XML解析器,有人推荐用JSON,可是这样要eval数据,其实可以直接import已经是对象的script来用。只是要多传个对象名,或者把对象名写死,或者像flickr那样jsonFlickrApi({"xxx":"xxx"}),直接当函数用,挖哈哈。

  实现某些效果时能用visibility:hidden解决时就别用display:none来玩。

  在这里强调js变量要注全局跟局部等等的意义并不大,JS复杂的地方也不是一两句能说得清的,关注大家关注月影的正在出版的新书吧。^^

  其实这里有的内容有不少跟如何快速的呈现我们的网页相近,不过那篇是以处理服务端为主,但在很多时候,节省服务端资源消耗的同时也会节省客户端的资源消耗。

  再其实,这篇已经蹲在草稿箱里好久了,一直没有时间去整理。现在给的也不是完整的,因为没有完整,慢慢补充吧。

  产生问题:虽然会引起浏览器的模式问题,但问题是可以解决滴。参考Serving up XHTML with the correct MIME type,派送XML头浏览器不会容错显示,出现错误结构会导致整个页面无法显法。

  Autolow: 优先考虑速度,但是也会尽可能改善外观。 回放开始时,消除锯齿功能处于关闭状态。 如果 Flash Player 检测到处理器可以处理消除锯齿功能,就会打开该功能。

  Autohigh:开始时回放速度和外观两者并重,必要时会牺牲外观来保证回放速度。 回放开始时,消除锯齿功能处于打开状态。如果实际帧频降到指定帧频之下,就会关闭消除锯齿功能以提高回放速度。使用此设置可模拟“消除锯齿”命令(“视图”>“预览模式”>“消除锯齿”)。

  模糊滤镜:使用模糊滤镜时,如果用于 blurX 和 blurY 的值是 2 的整数次幂(例如 2、4、8、16 和 32),则可以加快计算速度,并且可以使性能提高 20% 到 30%(flash的帮助是介样说滴)。


在微信浏览器测试下面网页的代码响应速度:

https://rawgit.com/barretlee/h5crash/master/demo/crash-memory.html

关于IOS UIWebView内存消耗过高的问题

最近发现app在打开一款H5游戏玩的时候经常莫名其妙就崩溃了,然后各种找原因发现在玩的时候memory消耗达将近200M,蒙了。这么大,而且退出后内存消耗也没怎么降下来。debug模式下玩了几次游戏崩...
  • jf200614379
  • jf200614379
  • 2016-10-20 16:04:15
  • 1430

ios webView内存爆涨的解决方法

之前因为项目里h5页面不多,所以webView虽然占很多内存,但是没引起我的注意。后来面试的时候,人家问我:用webView有啥弊端?我说不知道,直接用啊!后来了解了一下js javascritc...
  • gaoyuqiang30
  • gaoyuqiang30
  • 2016-10-26 17:25:55
  • 1181

H5性能优化方案

H5性能优化意义对于一个H5的产品,功能无疑很重要,但是性能同样是用户体验中不可或缺的一环。原本H5的渲染性能就不及native的app,如果不把性能优化做起来,将极大地影响用户使用产品的积极性。用户...
  • offbye
  • offbye
  • 2016-08-17 18:06:07
  • 3956

webview chromium v48 h5 video上屏过程详解

前段时间网上有同学问h5 video不显示图像问题。我好像误导别人了。最近刚好有机会看这块,就仔细梳理了下。 这篇博客分为两部分,第一部分是h5 video 播放器的实现结构,第二部分是h5 vide...
  • jaylinzhou
  • jaylinzhou
  • 2016-06-20 17:57:40
  • 1109

多线程的作用,对资源cpu的利用效率

多线程的作用: 1让程序和功能并行(实际上cpu还是在串行执行,只是在切换不同线程) 2提高cpu的利用率,不同线程间的io开销是不同的...
  • feicongcong
  • feicongcong
  • 2017-08-21 01:19:19
  • 364

Webview内存泄漏与内存占用过大OOM的优化

1.首先不能直接在xml写webview组件,用FrameLayout做容器,java中动态添加:
  • qq_30167925
  • qq_30167925
  • 2017-02-16 18:08:06
  • 1234

前端性能优化(JavaScript篇)

优化循环 如果现在有个一个data[]数组,需要对其进行遍历,应当怎么做?最简单的代码是: for (var i = 0; i length; i++) { //do someting } ...
  • daimomo000
  • daimomo000
  • 2017-06-06 17:36:17
  • 510

前端高质量知识(一)-JS内存空间详细图解

变量对象与堆内存 var a = 20; var b = 'abc'; var c = true; var d = { m: 20 } 因为JavaScript具有自动垃圾回收机制,所以对于前端开...
  • pingfan592
  • pingfan592
  • 2017-02-15 10:19:18
  • 5744

H5前端性能优化高级进阶

随着移动互联网的发展,我们越发要关注移动页面的性能优化,今天跟大家谈谈这方面的事情。移动页面布局越来越复杂,效果越来越炫,直接导致了文件越来越大,下载和运行速度越来越低,而速度低会造成不良影响,降低用...
  • u011363981
  • u011363981
  • 2016-01-08 10:38:53
  • 2283

几个系统级崩溃问题和h5加载页面崩溃问题及解决方案

众所周知系统级崩溃定位不到代码的具体函数,一般都是内存释放时异常,空指针,越界访问问题。再加上苹果应用在切换到后台,杀线程问题,io资源在后台不可以申请问题(当在后台连续断网10分钟,就是定位应用的线...
  • jia12216
  • jia12216
  • 2016-05-17 10:25:07
  • 3656
收藏助手
不良信息举报
您举报文章:[H5]如何减少网页的内存与CPU占用
举报原因:
原因补充:

(最多只允许输入30个字)