分享:“延迟加载与预加载”使用体会

注:文章以Linq to Entities 讲解

接触mvc+ef开发一年时间左右了,之前一直处于使用状态,对ef里面的一些概念并没有太多的研究,在解决问题的过程中有些疑问一直逗留在脑海中,现在稍微可以空下来查查资料并整理下了。

什么是“延迟加载”和“预加载”?听上去好像很拽的样子。

延迟加载:

老大最初给我的解释——“当使用到的时候才去加载,比如:ToList()、ToDictionary()的时候”,自己也简单的百度过一下,做过一些简单的测试,当用frofile监视如下代码:

[url=http://note.youdao.com/yws/public/resource/802e32135fe250bf0309b0b115486081/6165897760E64AF08101AFD50A9F6DE2][/url]

断点到第一行时,profile是不会有任何动静的,但是当你往下执行 “ToList()”句时,profile会监视到你发送过去的sql语句,那么这就可以解释了“当你使用时才去加载”就是延迟加载的意思。想想好像是这么回事,但总感觉有些牵强或者说缺乏说服力,因为IQueryable毕竟不是实实在在如List、Dictionary、Array这种集合,所以我需要得到列表而使用ToList()也很正常。

其实这并不能非常直观的体现“延迟加载”的牛逼或者说特别之处(当前理解和感受到的)。

延迟加载真真体现个性的地方其实是相对于导航属性来说的,或者说“关联表”,比如我有客户表T_CUSTOMER和客户联系人表T_CUSTOMER_CONTACTS,他们之间是一对多关系,业务场景可能会让你有如下代码——业务比较扯淡,假设为之。

[url=http://note.youdao.com/yws/public/resource/802e32135fe250bf0309b0b115486081/735228756FC74EED903AFCFA093B4170][/url]

图片有可能显示不了,这个是有道分享地址:

http://note.youdao.com/share/?id=802e32135fe250bf0309b0b115486081&type=note

希望大家指点指点,给一些宝贵意见,谢谢!

时间: 2024-12-28 00:54:54

分享:“延迟加载与预加载”使用体会的相关文章

ViewPager+Fragment取消预加载(延迟加载)

在项目中,都或多或少地使用的Tab布局,所以大都会用到ViewPager+Fragment,但是Fragment有个不好或者太好的地方.例如你在ViewPager中添加了三个Fragment,当加载ViewPager中第一个Fragment时,它会默认帮你预先加载了第二个Fragment,当你加载第二个Fragment时,它会帮你加载第三个Fragment.这样虽然有时很好,但是用户只需看一个Fragment时,我们就做了一些多余工作加载了第二个Fragment.在这只需要取消Fragment的

js图片预加载与延迟加载

图片预加载的机制原理:就是提前加载出图片来,给前端的服务器有一定的压力. 图片延迟加载的原理:为了缓解前端服务器的压力,延缓加载图片,符合条件的时候再加载图片,当然不符合的条件就不加载图片.? 预加载的实现目的:为了实现更好的用户体验.劣势:会消耗前端服务器的性能. 延迟加载的实现目的:为了优化服务器前端的性能,减少请求次数. 实现方式: 1.第一种是纯粹的延迟加载,使用setTimeOut或setInterval进行加载延迟. 2.第二种是条件加载,符合某些条件,或触发了某些事件才开始异步下载

ViewPager+Fragment取消预加载(延迟加载)(转)

原文:http://www.2cto.com/kf/201501/368954.html 在项目中,都或多或少地使用的Tab布局,所以大都会用到ViewPager+Fragment,但是Fragment有个不好或者太好的地方.例如你在ViewPager中添加了三个Fragment,当加载ViewPager中第一个Fragment时,它会默认帮你预先加载了第二个Fragment,当你加载第二个Fragment时,它会帮你加载第三个Fragment.这样虽然有时很好,但是用户只需看一个Fragmen

jQuery 插件开发——LazyLoadImg(预加载和延迟加载图片)

开发背景 本插件开发是近期写的最后一个插件了,接下来我想把最近研究的redis最为一个系列阐述下.当然Jquery插件开发是我个人爱好,我不会停止,在将来的开发中我会继续完善,当然也会坚持写这个系列的. 每次开发我都会说一下开发插件中用的思想和自己在开发时候的想法.这篇开发也不例外,等会我会一一叙述.上一篇提到的是代码重构思想,这一篇我想谈的是同一个插件,不同的设计思想,得到同样效果.说的有点绕,简单的说就是殊途同归的意思. LazyLoadImg 插件思想 预加载和延迟加载这个说法想必大家都有

js预加载/延迟加载

Pre loader 预加载一般有两种常用方式:xhr和动态插入节点的方式.动态插入节点是最为简单也最为广泛的一种异步加载方式,然后使用动态插入节点方法加载的文件都会 在加载后立即执行,javascript的执行一方面会占用浏览器js执行进程,另一方面也可能改变页面结构,而css 的执行更有可能让整个页面变化.xhr方式虽然不会执行脚本,但是由于同域的限制 Lazy loader方式在一些图片非常多的网站中非常有用,在浏览器可视区域外的图片不会被载入,直到用户将页面滚动到它们所在的位置才加载,这

jQ禁止右键点击、隐藏搜索文本框文字、在新窗口中打开链接、检测浏览器、预加载图片、页面样式切换、所有列等高、动态控制页面字体大小、获得鼠标指针的X值Y值、验证元素是否为空、替换元素、延迟加载、验证元素是否存在于Jquery集合中、使DIV可点击、克隆对象、使元素居中、计算元素个数、使用Google主机上的Jquery类库、禁用Jquery效果、解决Jquery类库与其他Javascript类库冲突

1. 禁止右键点击 代码如下: $(document).ready(function(){ $(document).bind("contextmenu",function(e){ return false; }); }); 2. 隐藏搜索文本框文字 代码如下: $(document).ready(function() { $("input.text1").val("Enter your search text here"); textFill($

图片预加载与图片懒加载的区别与实现

预加载与懒加载,我们经常经常用到,这些技术不仅仅限于图片加载,我们今天讨论的是图片加载: 一.什么是图片预加载与懒加载: 图片预加载:顾名思义,图片预加载就是在网页全部加载之前,提前加载图片.当用户需要查看时可直接从本地缓存中渲染,以提供给用户更好的体验,减少等待的时间.否则,如果一个页面的内容过于庞大,没有使用预加载技术的页面就会长时间的展现为一片空白,这样浏览者可能以为图片预览慢而没兴趣浏览,把网页关掉,这时,就需要图片预加载.当然这种做法实际上牺牲了服务器的性能换取了更好的用户体验. 图

Javascript图片的懒加载与预加载

1. 缓载.预载的概念 这些技术不仅限于图片加载,但我们首先讨论最常用的图片加载. 缓载:延迟加载图片或符合某些条件时才加载某些图片. 预载:提前加载图片,当用户需要查看时可直接从本地缓存中渲染. 两种技术的本质:两者的行为是相反的,一个是提前加载,一个是迟缓甚至不加载.缓载对服务器前端有一定的缓解压力作用,预载则会增加服务器前端压力. 2. 缓载的意义与实现 缓载的主要目的是作为服务器前端的优化,减少请求数或延迟请求数. 主要体现在三种模式上: 第一种是纯粹的延迟加载,使用setTimeOut

图片预加载和懒加载

1.什么是预加载? 提前加载图片,当用户需要查看时可直接从本地缓存中渲染. 2:什么是懒加载? 延迟加载图片,当用户需要的时候再去加载图片 当我们访问一些类似电商网站,遇到图片很多情况下,需要浏览器去下载这些图片,遇到网速比较慢的时候,用户等待的时间特别长,造成很不好的用户体验.这样的话,就有可能导致一部分的用户没有耐心,而丢失这部分用户. 图片的预加载是提升用户体验而损失性能的一种做法,而懒加载的性能就比较好,所以将两个结合起来放到web程序中是一种不错的选择. 预加载 Image 对象在客户