我有一个应用程序,它使用应用程序缓存来存储生成的响应,但使用自定义 HTTP 处理程序。对同一 URL 的请求始终会返回相同的响应,并且整个响应将整个插入到缓存中。
如果应用程序按 URL 进行缓存,那么使用应用程序缓存有什么优势吗?或者我应该只使用输出缓存?
请注意,因为我使用的是自定义 HTTP 处理程序,所以所有这些都是在 C# 中完成的,而不是在页面指令中完成的。
最佳答案
假设您不使用授权且没有动态内容,则级别越低,结果就越好。最低级别是内核模式缓存。 http://learn.iis.net/page.aspx/154/walkthrough-iis-70-output-caching/
把它想象成办公室。 从技术上讲,请求链是:老板、秘书、答录机和电话线路提供商。
想象一个没有秘书的办公室。老板必须接听每个电话。这是一个完全没有缓存的场景。
应用程序缓存是一个秘书。它处理调用,因此老板(应用程序)不必只是一遍又一遍地告诉同样的事情而回答。 秘书是介于老板和外界之间的人。她可以处理最简单的情况。当没有秘书在工作时,老板会很烦恼(内存力低)。
但是秘书是人,所以她晚上的某个时间回家(ASPNET应用程序有时会回收,应用程序缓存会暴露,所以就ASPNET而言,秘书与老板共享相同的应用程序)。
此时电话答录机开始播放。它不仅可以阻止秘书一遍又一遍地回答愚蠢的问题,还可以在没有秘书空闲时阻止老板。它只是一台机器,当秘书、老板都无法回答时,客户会听到预先录制好的声音或音乐(缓存的项目)。
IIS 缓存内核模式是您 asnet“办公室”的答录机。答录机比秘书便宜得多。它只是一个带有磁带的微 Controller ,它甚至不消耗咖啡,它只是播放磁带或类似的东西。
它在同一个盒子上运行,但它的性能要好得多,因为它只是通过自己的低级系统资源管理来完成以最大速度提供内容的简单任务。
也就是说,如果您在性能方面有半动态内容,内核模式是首选的缓存方式。
关于asp.net - 输出缓存与应用程序缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1923061/