【发布时间】:2013-12-08 15:10:19
【问题描述】:
我正在尝试根据不同的标准缓存导航菜单的各个部分。
例如,新闻和文章需要按持续时间刷新,而登录和个人资料内容应该按用户缓存。
我正在考虑 2 个选项 - 有人能告诉我每个选项的优缺点吗?如果可能的话,建议采取更好的方法!
选项 1。
只需将所有需要的 html 缓存为数据缓存中的字符串。需要时手动检查用户差异。
我(也许是错误的)认为这将是实现最多的工作,但也是缓存不同部分的最有效方式。
选项 2。
为菜单的每个部分设置一个具有不同子操作的 NavigationController。 (我们可以根据需要对每个子操作应用不同的 outputCacheProfile。)
但这需要我们为导航菜单的每个部分调用单独的 RenderAction。由于对 Phil Haack 的一篇博客文章的评论,我对此感到担心:
[Render Action] 与发出另一个请求非常相似,因为我们 需要通过路由来确保我们有合适的路由 数据和上下文来调用操作方法。所以每次调用 RenderAction 会加起来。
全文在这里:http://haacked.com/archive/2009/11/18/aspnetmvc2-render-action.aspx
【问题讨论】:
-
我真的很喜欢第二个选项 - 它是非常好的架构并且易于扩展。不幸的是,如果没有关于您的应用程序负载和性能要求的任何信息,就不可能给出明确的答案。第一个选项似乎需要大量的手动工作并且根本无法扩展(如果您有不同类型的用户),这样做的唯一原因 - 如果渲染菜单需要至少 10% 的时间来检索它(例如,来自数据库)。但同样,如果没有有关性能要求的信息,这只是猜测。
-
谢谢,是的,同意可扩展性。好点子。
标签: asp.net asp.net-mvc asp.net-mvc-4 caching asp.net-mvc-5