Azure AppFabric输出缓存是否支持读取直通或程序无效



我想知道Azure AppFabric SDK中当前提供的输出缓存提供程序是否支持(1)中描述的内容:

通常,当get请求失败时,客户端负责从慢速存储器(例如数据库、文件)加载丢失的数据服务器或远程服务)并填充高速缓存。这使请求所需的往返次数,并介绍种族状况的可能性。启用通读支持AppFabric本身对慢速存储进行辅助调用。AppFabric通过抽象类的自定义实现获得这种能力DataCacheStoreProvider。

(3)的">下一步是什么"部分似乎表明它不是:

此外,缓存会话状态提供程序的成功ASP.NET的方案导致请求能够将write-behind和read-through查询与缓存相关联,以便缓存可以成为操作数据的主要方式,同时关联的查询更新后端中的数据层。

我们将评估这些和其他功能,以便可能包含在Windows Azure AppFabric缓存的未来版本。同时,我们鼓励您试用当前的缓存服务实现,并让我们知道它是如何为您工作的。

是否有任何其他机制可以通过编程方式a)使缓存页面无效和b)替换缓存页面,而不让它通过客户端请求自然地重新水合(这可能会在加载时导致问题,因为所有请求都竞相重新水合元素)?

Windows Server(4)的其他记录差异:

ASP.NET缓存

Windows Azure AppFabric同时提供会话状态提供程序和输出缓存提供程序。此提供程序与发货的提供程序不同随着Windows Server AppFabric的首次发布。它还提供附加功能。因此,谨慎按照说明正确修改web.config文件用于Windows Azure AppFabric。有关详细信息,请参阅使用用于AppFabric的ASP.NET 4缓存提供程序。

不可用缓存功能

Windows Azure AppFabric支持缓存功能的子集在Windows Server AppFabric中可用。以下列表描述其中一些差异。

通知

Windows Azure AppFabric缓存不支持通知。这也意味着您不能使用通知来使本地缓存。在Windows Azure AppFabric中,本地缓存只能使用基于超时的无效策略。有关的更多信息Windows Server AppFabric中的通知功能,请参阅缓存通知(Windows Server AppFabric缓存)。

过期和驱逐

默认情况下,Windows Azure AppFabric缓存中的项目不会过期。这意味着,当您超过最大缓存大小时缓存中最近使用的项目将被收回。与Windows Server不同AppFabric,无法更改此默认过期设置或值。但是,如果使用显式过期时间,例如10分钟,则缓存将执行此操作过期值。这可以通过Add的各种重载来完成和Put方法。请注意,ASP.NET提供程序自动使用这些重载为会话状态和输出缓存。

Windows Azure AppFabric缓存不支持在上禁用逐出缓存。在记忆压力下,项目总是有可能被驱逐。应用程序的设计应能预见到可能丢失,需要随时重新加载。如果缓存太对于应用程序需求来说,它很小,可以是动态的从Windows Azure平台管理门户增加。

有关Windows Server中的过期和逐出的详细信息AppFabric,请参阅过期和逐出(Windows Server AppFabric缓存)。

高可用性

Windows Azure AppFabric缓存不支持高可用性特色有关Windows中高可用性的详细信息服务器AppFabric,请参阅高可用性(Windows Server AppFabric缓存)。

区域和标签

Windows Azure AppFabric缓存不支持用户创建的区域或基于标签的搜索。

API支持

在大多数情况下,您可以使用相同的API来编写缓存客户端使用Windows Azure AppFabric或Windows Server AppFabric。有由于两种解决方案之间的差异,出现了一些例外情况。对于Windows Azure AppFabric可用API的详细审查缓存客户端,请参阅API参考(Windows Azure AppFabric缓存)。

参考文献:

(1) Windows Server AppFabric添加了"通读"one_answers"隐藏写入"支持:http://www.infoq.com/news/2011/08/AppFabric-CTP

(2) ASP.NET 4的可扩展输出缓存(VS 2010和.NET 4.0系列):http://weblogs.asp.net/scottgu/archive/2010/01/27/extensible-output-caching-with-asp-net-4-vs-2010-and-net-4-0-series.aspx

(3) 介绍Windows Azure AppFabric缓存服务:
http://msdn.microsoft.com/en-us/magazine/gg983488.aspx

(4) 内部缓存和云中缓存之间的差异:
http://msdn.microsoft.com/en-us/library/gg185678.aspx

因为您引用的文档表明,使用Windows Azure共享缓存服务(以前称为Windows Azure AppFabric缓存)无法使本地缓存无效。这是因为该服务不支持通知。如果您没有在该服务中使用本地缓存选项,则可以通过显式删除缓存项来使其无效。这将从服务中的分布式缓存中删除缓存项,然后所有请求它的实例都将一无所获。

至于替换缓存页面,我相信你可以通过直接更新缓存来做到这一点;然而,考虑到从缓存中删除某些内容时需要考虑的因素数量,您可能无法100%保证页面最终不会因压力而脱落,并且无论如何都会发生竞争。

如果你想对缓存有更多的控制,我强烈建议你看看新的Windows Azure专用缓存预览。它还在预览中,所以你可能不想在生产工作中冒险,但它会让你对缓存有更多的控制权。

最新更新