Appfabric上的缓存模式(整个列表与个别项目相同)

时间:2012-01-02 18:16:30

标签: caching appfabric

我有一个将项目存储在数据库中的Web应用程序。 我决定使用App Farbic Caching来提高性能。 关于以下内容的最佳模式(或我应该根据哪个标准决定): 将每个项目分别存储在缓存中。 或者将整个列表存储在缓存中(即一个表示项目列表的键)?

非常感谢,

约瑟夫

1 个答案:

答案 0 :(得分:1)

这取决于。有几点需要考虑。 如果列表可能很大,则单个缓存密钥的内容可能会变得非常大(显然可以通过启用本地缓存来减轻这种情况)。像这样序列化和反序列化大对象图将消耗客户端上的时间和资源。 但是,您可能希望这样做,因为您可能希望在从缓存中反序列化后,在您的应用程序中执行linq to objects查询。

如果您对列表执行的查询定义得很好,您可以在不同的缓存键下缓存多个列表 - 而不是,您可以使用 PeopleMale PeopleFemale PeopleAmerican PeopleIrish PeopleFrench 等 如果这样做,您可能会让同一个人出现在多个缓存人员列表下,您必须对此进行管理。 例如,我有一个具有双重美国和爱尔兰公民身份的女性。如果我编辑该人,以便性别从女性变为制造并且公民身份变为荷兰人,则有必要确保四个键无效 PeopleMale PeopleFemale PeopleAmerican PeopleIrish

我上面给出的例子可能很难管理 - 不管它的价值与否真的取决于你的确切用例。

一般情况下,我建议您只使用包含相对非易失性参考数据(国家,地位类型,国籍等)列表的缓存键。

希望这有帮助。