新社区网站

通常,你会在正确的地方,但我们最近推出了一个全新的社区网站……为社区,受社区。

耶……带我去社区!

社区博客是社区成员的个人观点,绝不是DNN公司或DNN平台的官方立场。这是一个表达个人对DNNPlatform、社区及其生态系统的想法的地方。你有什么有用的信息想要与DNN社区分享吗?如果有,请联系

社区博客的使用由我们的社区博客指南-请在评论或发布之前阅读。


在自己的代码中使用高级缓存。

11月 18

很久以前我写过一篇关于DotNetNuke 5中的缓存增强和最近的一篇博客文章一位卖家关于使用自定义模块中的DotNetNuke缓存促使我重新审视我的旧职位。

在他精彩的文章中,Mitchel描述了一种从DotNetNuke . common . utilities中一些可用方法中抽象出来的方法。Datacache类。这确实是简化在您自己的模块中使用DotNetNuke实体缓存的好方法。

这些基本方法有一点不太好,那就是它们不适合在高流量应用程序中使用。加上了DataCache的。GetCache方法本身不是线程安全的。请记住,在DotNetNuke 4.9的“旧”日子里,相当多的站点因此有缓存问题。使用此缓存模式的另一个原因是,它还允许您非常容易地设置缓存超时和缓存优先级。

在DotNetNuke 5中引入的缓存模式已经针对性能和线程安全进行了增强和优化。其中一个增强是现在还支持缓存字典。

在重读我以前的博客文章时,我意识到如何在自己的代码中使用这种模式仍然不是很清楚。它缺少一个简单的例子。因此,在反弹中,我将指出Core中的另一个更简单的示例,并展示如何在新版本的announcement模块中使用此缓存模式的示例。

让我们首先看看核心用来检索门户的所有页面的方法,dotnetnuker . entities . tabs . tabcontroller . gettabsbyportal:

清单1

以及相应的回调方法:

清单2

正如您所看到的,这也非常易于使用。在后端是CBO。GetCachedObject调用DataCache。GetCachedData,你可以从你的代码中直接调用它。然而,CBO(代表自定义业务对象)的架构方式是DotNetNuke自己的对象工厂。这个类有各种方便的方法来帮助创建对象。因此,使用相同的对象工厂从缓存中检索对象是有意义的。

在即将到来的announcement模块版本中,缓存将是重点关注的内容之一,特别是因为当前版本存在一些奇怪的缓存问题。该模块的新版本必须跟踪公告模块中单个条目的URL,以便能够生成适当的ATOM提要(该模块将同时支持RSS和ATOM提要)。一种选择是将该URL存储在数据库中,但是当模块移动到另一个页面时,这会导致问题。我决定将其作为一个计算字段,但是,由于该计算不是很有效,因此需要缓存计算结果。

清单3

在这种情况下,只有当数据不在缓存中时才调用PermalinkCallback方法,在所有其他情况下,该值以线程安全的方式从数据缓存中加载。

如果您的自定义代码不使用缓存,那么开始尝试使用它将是一个非常好的主意。DotNetNuke使您可以很容易地开始使用缓存,并且可以很好地从一个好的缓存模式的内部工作中抽象出来。

这篇文章是交叉张贴从我的个人博客。

评论

目前没有评论,请第一个发表评论。

评论形式

只有注册用户才能发表评论。

NewsArchives


Aderson Oliveira(22岁)
亚历克·惠廷顿(11岁)
亚历山德拉·戴维斯(3岁)
Alex Shirley(10岁)
安德鲁·霍夫林(3岁)
安德鲁·纳斯(30岁)
安迪·特里巴(1)
安东尼·格伦赖特(5岁)
安东尼奥·夏格里(28岁)
阿什·普拉萨德(37岁)
本·施密特(1)
本杰明·赫尔曼(25岁)
伯努瓦·萨顿(9岁)
贝丝·费尔堡(12岁)
比尔·沃克(36岁)
鲍勃·克鲁格(5岁)
波格丹·莱特斯库(1)
布莱恩·杜克斯(2岁)
白雪皑皑(1)
布鲁斯·查普曼(20岁)
布莱恩·安德鲁斯(1)
卡塔·康诺利(55岁)
查尔斯·纳斯(163)
克里斯·哈蒙德(第213届)
克里斯·帕特拉(55岁)
克林特·帕特森(108)
邝党(21岁)
丹尼尔·巴塞洛缪(2岁)
丹尼尔·梅特勒(181)
丹尼尔·瓦拉达斯(48岁)
戴夫·巴克纳(2岁)
大卫·波因德克斯特(12岁)
大卫·罗德里格斯(3岁)
萧耀文(1)
道格·豪厄尔(11岁)
Erik van Ballegoij(30岁)
恩斯特·彼得·塔明加(80岁)
弗朗西斯科·佩雷斯·安德烈斯(17岁)
杰夫·巴洛(12岁)
乔治·阿拉特拉什(12岁)
吉福德·沃特金斯(3)
吉尔·勒·皮戈彻(3)
伊恩·罗宾逊(7岁)
以色列·马丁内斯(17岁)
简·布洛姆奎斯特(2)
简·乔纳斯(3岁)
贾斯普雷特·巴蒂亚(1)
詹妮·梅里菲尔德(6岁)
乔·布林克曼(274)
约翰·米切尔(1)
乔恩·亨宁(14岁)
乔纳森·希利(4岁)
乔丹·库珀史密斯(1)
约瑟夫·克雷格(2岁)
马侃(1)
凯文贝吉(3岁)
凯利·福特(4岁)
肯·格里尔森(10岁)
凯文·施莱纳(6岁)
利·波因特(31岁)
洛林·杨(60岁)
Malik Khan (1)
马特·拉特利奇(2岁)
马蒂亚斯·施洛曼(16岁)
毛里西奥Márquez (5)
迈克尔·多克西(7岁)
迈克尔·托比什(3岁)
迈克尔·华盛顿(2002)
米格尔·加梅坦(3)
迈克·霍顿(19岁)
米歇尔·塞勒斯(40岁)
弥敦罗孚(3)
Navin V Nagiah(14岁)
n (31)
Nik Kalyani(14岁)
奥利弗·海因(1)
帕特里西奥·f·萨利纳斯(1)
帕特里克·瑞恩(1)
彼得·唐克(54岁)
菲利普·比德尔(135岁)
菲利普·贝克尔(4岁)
理查德·杜马斯(22岁)
罗伯特·J·柯林斯(5岁)
罗杰·塞尔温(8岁)
鲁本·洛佩兹(1)
莱恩·马丁内斯(1岁)
Sacha Trauwaen (1)
爱沙尼亚语(4)
Sanjay Mehrotra(9岁)
斯科特·麦卡洛克(1)
斯科特·施莱西尔(11岁)
斯科特·威尔金森(3岁)
斯科特·威尔海特(97岁)
塞巴斯蒂安·洛波德(80岁)
肖恩·沃克(237)
肖恩·梅哈菲(17岁)
斯蒂芬·卡尔曼(12岁)
Stefan Kamphuis(12岁)
史蒂夫·法比安(31岁)
史蒂文·费舍尔(1)
蒂莫·布鲁梅尔霍夫(24岁)
托尼·亨利克(3岁)
托斯滕·韦根(3岁)
第谷·德·沃德(4)
Vicenç Masanas(27岁)
Vincent Nguyen(3岁)
维塔利·科扎达耶夫(6岁)
威尔·摩根维克(40岁)
威尔·斯特罗尔(180岁)
威廉·塞弗伦斯(5岁)
什么是液体含量?
找出
什么是液体含量?
找出
什么是液体含量?
找出
Baidu
map