js大量数据计算导致页面假死

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js大量数据计算导致页面假死相关的知识,希望对你有一定的参考价值。

参考技术A 为什么页面会卡顿呢,以60Hz为例,即一秒钟的动画就是由60张静态图片连在一起。60fps是动画播放比较理想、比较基础的要求,windows系统有个刷新频率也是这个意思。60fps就要求一帧的时间为1s/60=16.67ms。浏览器显示页面的时候,要处理js逻辑,还要做渲染,每个执行片段的时间不能超过16.67ms。实际上,浏览器内核自身支撑体系运行也需要消耗一些时间,所以留给我们的时间差不多只有10ms。并且在处理js计算时,浏览器不会响应用户的操作,所以就造成了页面“假死”。

Web Work,就是为javascript创造多线程环境,允许主线程创建Web Worker线程,将一些任务分配给后台运行。在主线程运行的同事,Work线程在后台运行,两者互不干扰。等到Work线程完成计算任务再把结果返回给主线程。这样的好处是,一些密集或者高延迟的计算任务,被Work线程给分担了,这样主线程就会很流程。
Worker线程一旦创建成功,就会始终运行,不会被主线程上的活动打断取消。这样有利于随时响应主线程的通信。但是,这也造成了Worker比较耗费资源,不应该过度使用,所以一旦使用完毕,就应该关闭。

1.同源限制:分配给Worker线程运行的脚本文件,必须与主线程的脚本文件同源。
2.DOM限制:Work线程所在的全局对象和主线程不一样,所以无法读取主线程所在网页的DOM对象,也无法使用document,window,parent这些对象。但是可以使用navigator和location。
3.通信联系:Worker线程和主线程不在同一个上下文环境,他们不能直接通信,必须通过消息完成。
4.脚本限制:Worker线程不能执行alert和confirm方法,但是可以使用XMLHttpRequest对象发出的AJAX请求。
5.文件限制:Work线程不能读取本地文件,它所加载的脚本必须来自网络。

火狐浏览器打开带flash的页面浏览器假死,崩溃

火狐浏览器打开带flash的页面浏览器假死,崩溃

今天打开页面时运行了flash插件,然后发现整个浏览器没有反应,浏览器未出现无响应提示,并且电脑内存,CPU都处于正常范围,在网上看了半天,大致原因是因为flash的安全沙箱技术,导致浏览器崩溃

解决方案

1、点击 菜单 中的 附加组件。 然后左侧选择 插件 。

然后在右侧 找到 Shockwave Flash。点击选项。

取消勾选 拦截骚扰与危险性的flash内容。

重启火狐即可。

技术分享图片

2,手动更改,百度上的教程都是这种方法,效果与上面的方法一样,但是上面的方法为关闭火狐浏览器的沙箱功能,这个方法关闭flash的沙箱

根据对应的系统选择路径

Windows 32位系统:C:windowssystem32macromedflash
Windows 64位系统:C:windowssyswow64macromedflash

打开之后,在文件最后加上一行:
ProtectedMode=0

最后建议不要更新flash,自从被某公司代理后,会有广告,每次更新后都有些问题,而且现在很多网站都废弃flash了,现有版本足够



以上是关于js大量数据计算导致页面假死的主要内容,如果未能解决你的问题,请参考以下文章

c#中我要实现大量的httpwebrequest,但是不想winform假死住,请问用多线程还是异步?

虚拟滚动技术 --- 解决加载大量列表DOM导致页面卡顿

页面出现假死的问题

具有大量数据的嵌套foreach会导致Outofmemory异常

web 实现大量打印

表单 POST 无法使用巨大的 json 字符串;还有其他方法可以加载包含大量 POST 数据的页面吗?