懒加载是一种数据加载模式,指的是当需要数据了,加载器才会去加载相关的数据。

懒加载

懒加载很适合加载次数少且无法预估何时加载的数据,优点就是能减轻系统负载,并且每次获取到的都是最新数据。
很多时候,玩游戏加载存档就是一种懒加载。因为系统无法预知玩家想要加载的是哪一个存档,而加载所有存档显然又没有必要。

预加载

与其对应的是预加载,可以看出,这表示了预先加载数据。不过预加载一般用于一些体量大的数据的存入操作。
例如很多游戏中,为了场景无缝过渡,就会在角色接近当前场景边缘时,就开始预加载其他场景。

一般情况下,预加载会获得更好的使用体验,但耗用的系统资源也会更多。并且,预加载也需要很好的触发逻辑,不然错误地预估了加载时间只会做无用加载。
就像是MIUI有次版本就是说的会预测用户某个时间会打开某个APP,就会在此之前进行预加载。结果就是更耗电,而且预估准确率也不高。

预加载如果使用得当,会让整个用户体验上升一个层次。举个例子,当你按下电脑电源的那一刻,电脑就已经开机了;
APP和网页都能即点即开(有些浏览器就会对分页数据进行下一页预加载,使用过的人应该明白这种体验有多好);
这些体验就比你在那干等要好很多。

缓存

在平衡懒加载与预加载的利害时,我们一般会加入另一个系统 —— __缓存系统__。

缓存主要是存储一些不必实时更新又查询频繁的数据。像我们在写代码的时候,用Collection或者Map来存放数据时,就是用的缓存方式。

由于加载资源可能会出现加载时消耗较多的系统资源或加载时间较长的问题,所以我们在加载完资源后,可以将资源缓存起来,按照资源的时效性给定生存时间。
这样,加载过一次的数据,在短时间内再次访问时,就会非常快。
但是由于系统资源的限制,我们不可能缓存所有的数据,换句话说,如果我们的系统资源无限制,那么,我们就可以缓存所有的预加载的静态资源,这会大大增加用户的使用体验。

虽然缓存有很多的优点,但并不是就一定会用到。主要是因为缓存系统会消耗额外的系统资源,如果缓存系统的资源耗用比其缓存的数据加载耗用还大,那就得不偿失了。

在缓存的使用上,我们会考虑系统资源的用量,进行一定的取舍。一般情况下,我们是按照加载耗时来定的。越耗时的数据,越应该缓存起来。

总之

加载模式与缓存的使用都只是为了一个目的 —— __使用体验__。如果有一天,系统加载任何资源的时间都能在用户感知范围外,且对性能几乎无损耗,那么,我们肯定都是做的懒加载。


本站总访问量