利用享元模式来解决DOM元素过多导致的网页解析慢、卡死的问题
2017-01-25 13:36
351 查看
我也不知道应该为本文的思路取一个什么比较恰当的标题,但是感觉符合享元模式的思路。
在一些网页应用中,有时会碰到一个超级巨大的列表,成千上万行,这时大部份浏览器解析起来就非常痛苦了(有可能直接卡死)。
也许你们会说可以分页或动态加载啊?但是有可能需求不允许分页,动态加载?网络的延迟也会造成体验不好。
那么适时候介绍本文的实现思路了,有需要的同学可以参考去实现。
首先上最终的效果:
主要思路如下:
首先,创建如上图所示的三个DIV,scrollbar用于显示具体的滚动条(CSS需要设置zindex,要显示在demo-list的底层),real-panel用于计算列表的实际高度(每一个li的高度是固定的,有多少项数据也是知道的,由此可以计算出列表的实际高度),demo-list主要用于当前滚动条高度对应的实际数据(css需要设置zindex,显示于scrollbar的上层,需要使用JS计算宽度等于real-panel的宽度,这样就刚好覆盖掉底层滚动条外的区域)。
然后,使用KO对数据实现绑定,由于KO的双向绑定,我们可以不用再去实现滚动滚动条时数据变化时带来的更新操作。
最后,就是兼容性了。本文的具体实现在IE6\7\8\9\10\11,FireFox,Chrome,Edge上效果完美。
下载地址:http://www.51aspx.com/code/JqueryEnjoyMetaPlug
在一些网页应用中,有时会碰到一个超级巨大的列表,成千上万行,这时大部份浏览器解析起来就非常痛苦了(有可能直接卡死)。
也许你们会说可以分页或动态加载啊?但是有可能需求不允许分页,动态加载?网络的延迟也会造成体验不好。
那么适时候介绍本文的实现思路了,有需要的同学可以参考去实现。
首先上最终的效果:
主要思路如下:
首先,创建如上图所示的三个DIV,scrollbar用于显示具体的滚动条(CSS需要设置zindex,要显示在demo-list的底层),real-panel用于计算列表的实际高度(每一个li的高度是固定的,有多少项数据也是知道的,由此可以计算出列表的实际高度),demo-list主要用于当前滚动条高度对应的实际数据(css需要设置zindex,显示于scrollbar的上层,需要使用JS计算宽度等于real-panel的宽度,这样就刚好覆盖掉底层滚动条外的区域)。
然后,使用KO对数据实现绑定,由于KO的双向绑定,我们可以不用再去实现滚动滚动条时数据变化时带来的更新操作。
最后,就是兼容性了。本文的具体实现在IE6\7\8\9\10\11,FireFox,Chrome,Edge上效果完美。
下载地址:http://www.51aspx.com/code/JqueryEnjoyMetaPlug
相关文章推荐
- 利用享元模式来解决DOM元素过多导致的网页解析慢、卡死的问题
- 利用DOM创建input时,遇到的问题解决方法
- 关于解决winform控件过多导致闪烁问题
- 如何解决XML文件中特殊字符“& <”导致解析错误的问题
- 分享: 利用Readability解决网页正文提取问题
- 利用overflow属性解决子元素float浮动后父级元素高度无法自适应的问题
- Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决
- 利用本地DNS解析解决通讯问题
- Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决(续)
- 利用小数解析差异解决浏览器兼容性问题
- 怎么解决内存不足以及IE弹出提示:此网页上的问题导致internet explorer关闭并重试
- 如何解决由于服务过多或异常导致ArcGIS Server 无法正常运行的问题
- 解决PHP加速器eAccelerator导致php-cgi占用内存过多的问题
- 利用Readability解决网页正文提取问题
- HttpWebResponse无法准确获取CharacterSet导致网页数据乱码问题的解决
- 上午解决了网页解析乱码的问题
- 【css】利用小数解析差异解决浏览器兼容性问题
- 关于:使用JSP+Servlet重定向网页导致CSS等失效的问题的解决
- 父元素的高度为0利用伪元素:after清除浮动可解决问题
- Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决