您能否帮助我确定以下哪种方案最有效。
我有 3 个用户控件。每个控件都需要根据 SQL Server 查询的结果生成内容,例如用户控件 #1 使用查询的输出填充网格视图。
我想利用缓存来减少到我的 SQL Server 数据库的往返。我想出了以下两种解决方案,并想知道哪一种效果最好。
场景#1:
将所有 3 个用户控件的查询放在一个 SQL Server 存储过程(批处理)中,在包含页面内的用户控件之外执行存储过程,然后为每个用户控件提供其查询输出。通过将所有 3 个查询放在一个存储过程中,可以减少到数据库的往返次数。
在这种情况下,缓存将通过缓存存储过程的输出来实现。因此,每次都会从内存中取出存储过程的输出,为每个用户控件提供它的输出,之后每个用户控件都会产生它的输出。ASP.NET 对象缓存将缓存大约 188 个不同版本的查询。
场景#2:
在每个用户控件内单独查询 SQL Server 数据库,然后使用每个用户控件获得的查询结果生成每个用户控件的输出。这意味着每个用户控件将单独调用 SQL Server 数据库。在这种情况下,缓存将通过缓存每个用户控件的输出来实现,因此用户控件不必每次都生成其输出,并且可以直接从内存中获取其输出。在这种情况下,需要缓存一个或多个用户控件的大约 188 个不同版本。
提前致谢