通过用延迟换取内存,缓存可以创造奇迹。魔鬼在于“有效地配置它”。
重要的是自己确定应用程序中可接受的行为,例如,如果首页上的“前 3 个帖子”出现 1 分钟之前是否可以?如果“当前用户在线”列表最多 30 秒,可以吗?如果主页需要 0.75 秒加载,是否可以,还是需要更快?您对这些问题的回答将决定什么应该或不应该被缓存。分析您的应用程序,以便您了解真正的性能瓶颈在哪里以及它们存在的原因,以便您知道将优化/缓存工作集中在哪里
.Net 应用程序中有多种形式的缓存可用。 OutputCache
只是一种形式:
- 应用程序级缓存(由应用程序中的所有内容共享 -
Application[Key]
)
- 对象缓存(通过缓存失效回调自动管理 -
Cache[Key]
)
- 输出缓存(缓存生成的 aspx 页面/部分的输出 -
OutputCache
属性)
- Per-Request Caching(在单个请求期间缓存计算的数据 -
Context[key]
)
- 会话缓存(缓存特定于用户会话的数据 -
Session[key]
)
它们各有优缺点,设计良好的应用程序可能会使用大部分或所有这些形式的缓存。如果您想考虑一些要点OutputCache
,这里有一些:
- 尝试缓存页面的一部分而不是整个页面,因为它们更有可能被重用。使用像 a 这样的组件来构建您的页面在
UserControl
这里会有所帮助。
- 使用一组变化很大的参数时要小心,例如
QueryString
每个项目 id 不同的参数,因为您最终会生成大量不经常使用的缓存副本,消耗大量内存而没有什么好处。
- 请注意,这
OutputCache
只是保存生成的 ASPX 标记输出。因此,它不会像动态页面中的其他缓存类型那样工作,这些缓存类型会根据用户输入更改表单。