web中的懒加载

在Web应用程序中,系统的瓶颈常在于系统的响应速度。如果系统响应速度过慢,用户就会出现埋怨情绪,系统的价值也因此会大打折扣。因此,提高系统响应速度,是非常重要的。

Web应用程序做的最多就是和后台数据库交互,而查询数据库是种非常耗时的过程。当数据库里记录过多时,查询优化更显得尤为重要。为了解决这种问题,有人提出了缓存的概念。缓存就是将用户频繁使用的数据放在内存中以便快速访问。在用户执行一次查询操作后,查询的记录会放在缓存中。当用户再次查询时,系统会首先从缓存中读取,如果缓存中没有,再查询数据库。缓存技术在一定程度上提升了系统性能,但是当数据量过大时,缓存就不太合适了。因为内存容量有限,把过多的数据放在内存中,会影响电脑性能。而另一种技术,懒加载可以解决这种问题。

懒加载(Load On Demand)是一种独特而又强大的数据获取方法,它能够在用户滚动页面的时候自动获取更多的数据,而新得到的数据不会影响原有数据的显示,同时最大程度上减少服务器端的资源耗用。

考虑这样一个例子:海尔电器是一个非常大的组织机构,它下有1万多个组织单元。由于组织单元的复杂性,组织单元间也存在着上下级关系。现在的问题是:用户想加入海尔电器的某个组织单元,他该怎么选择到这个组织单元呢?

很容易想到的一个解决方法是:查询数据库,把海尔电器的所有组织单元放到一个下拉列表中,让用户选择即可。这样的确是解决问题了,但是,测试发现,浏览器在显示组织单元数据时就直接假死了。看来,这样做性能太差,可以不采纳。

另一个解决方法就是利用懒加载技术。由于组织单元间存在着上下级关系,那么组织单元的排列就可以当作一棵树来处理。在显示数据时只显示父节点,点击父节点时,就能显示父节点下的子节点。如下图所示:

用户要选择某个组织单元,只需点击该组织单元的父亲节点就能找到该组织单元。

可以看出,懒加载节省了系统响应时间,提升了系统性能,非常具有利用价值。

在hibernate中,懒加载异常的解决方案就是利用spring的方案:

在web.xml中配置这个即可:

时间: 2024-10-07 02:26:15

web中的懒加载的相关文章

解决hibernate中的懒加载(延迟加载)问题

解决hibernate中的懒加载(延迟加载)问题 我们在开发的时候经常会遇到延迟加载问题,在实体映射时,多对一和多对多中,多的一样的属性默认是lazy="true"(即,默认是延迟加载), 如:<many-to-one name="parent" class="Department" column="parentId" lazy="true"/> 延迟加载表现在:比如:我们要查询id为2的部门数

关于swift中的懒加载

懒加载 在 iOS 开发中,懒加载是无处不在的 懒加载的格式如下: lazy var person: Person = { print("懒加载") return Person() }() 懒加载本质上是一个闭包 以上代码可以改写为以下格式 let personFunc = { () -> Person in print("懒加载") return Person() } lazy var demoPerson: Person = self.personFunc

mybatis中的懒加载

知识点:mybatis中的懒加载的使用 参考:https://www.cnblogs.com/ysocean/p/7336945.html?utm_source=debugrun&utm_medium=referral (1)什么是mybatis的懒加载 通俗的讲就是按需加载,我们需要什么的时候再去进行什么操作.而且先从单表查询,需要时再从关联表去关联查询,能大大提高数据库性能, 因为查询单表要比关联查询多张表速度要快. 在mybatis中,resultMap可以实现高级映射(使用associa

Web程序中的懒加载异常说明及解决方案

所谓懒加载(lazy)就是延时加载,延迟加载. 什么时候用懒加载呢,我只能回答要用懒加载的时候就用懒加载. 至于为什么要用懒加载呢,就是当我们要访问的数据量过大时,明显用缓存不太合适, 因为内存容量有限 ,为了减少并发量,减少系统资源的消耗, 我们让数据在需要的时候才进行加载,这时我们就用到了懒加载.懒加载的异常有很多种,你指的是不是session已经关闭的异常?因为那个初学者最容易遇到情况是当你加载出一个一对多关系的一这端的对象,然后在出了事务之后的地方,比如页面上,还想再获取多端对象里面的除

iOS中的懒加载

iOS开发中 我们经常使用懒加载 1.懒加载的好处,让控件和对象在最需要加载的时候加载.这样可以节省内存空间,因为我们移动的设备资源还是比较宝贵的.所谓懒加载 就是推迟他的getter方法的执行. 比如.一个view的子控件 ,只有当这个view被显示的时候才去加载.一个tableViewCell中,给他设置了图片,他的content View里面才包含imageView的图片,只有设置了textLabel的内容,才会加载这个textLabel. //collectionView的数据源--属性

swift中的懒加载

//静态的,外界不能访问 private lazy var button:UIButton = UIButton() //形式 lazy var 名字:类型 = 类创建

使用Webpack的代码拆分在Vue中进行懒加载

参考学习:https://alexjover.com/blog/lazy-load-in-vue-using-webpack-s-code-splitting/ 学习文案:https://webpack.docschina.org/guides/lazy-loading/ 原文地址:https://www.cnblogs.com/nayek/p/12123639.html

Vue+Element中Table懒加载,新增、删除操作后手动更新

https://blog.csdn.net/qq_34817440/article/details/96482818 this.$set(this.$refs.tableDom.store.states.lazyTreeNodeMap, id, []); 原文地址:https://www.cnblogs.com/zhaoyun4122/p/12134174.html

系统管理模块_部门管理_设计(映射)本模块中的所有实体并总结设计实体的技巧_懒加载异常问题_树状结构

系统管理模块_部门管理_设计本模块中的所有实体并总结设计实体的技巧 设计实体流程 1,有几个实体? 一般是一组增删改查对应一个实体. 2,实体之间有什么关系? 一般是页面引用了其他的实体时,就表示与这个实体有关联关系. 3,每个实体中都有什么属性? 1,主键.推荐使用代理主键 2,关联关系属性.在类图中,关联关系是一条线,有两端,每一端对应一个表达此关联关系的属性.有几个端指向本类,本类中就有几个关联关系属性. 3,一般属性.分析所有有关的页面,找出表单中要填写的或是在显示页面中要显示的信息等.