我有一个应用程序,它使用应用程序缓存来存储生成的响应,但是自定义HTTP处理程序。始终将相同的响应返回给同一URL的请求,并将整个响应全部插入到缓存中。
如果应用程序是按URL缓存的,那么使用应用程序缓存是否有任何优势?或者我应该只使用输出缓存?
请注意,因为我使用的是自定义HTTP处理程序,所有这些都是在C#中完成的,而不是在页面指令中完成的。
答案 0 :(得分:1)
假设您不使用授权而不使用动态内容,则结果越低,您的结果越低。最低级别是内核模式缓存。 http://learn.iis.net/page.aspx/154/walkthrough-iis-70-output-caching/
从办公室的角度来考虑它。 从技术上讲,请求链是:老板,秘书,电话答录机和电话线提供商。
想象一下没有秘书的办公室。老板不得不接听每一个电话。这是一个没有缓存的场景。
应用程序缓存是秘书。它处理调用,所以老板(应用程序)不必回答只是一遍又一遍地讲同样的事情。 秘书是坐在老板和外部世界之间的人。她可以处理大多数简单的场景。当没有工作的秘书(低记忆)时,老板会感到困扰。
但秘书是一个人,所以她在晚上的某个时间回家(ASPNET应用程序在某个时间回收,应用程序缓存暴露,所以在ASPNET方面,秘书与老板共享同一个应用程序)。
这里有一台应答机。它不仅可以阻止秘书一遍又一遍地回答愚蠢的问题,而且当没有秘书可用时,它会屏蔽老板。它只是一台机器,当没有秘书,没有老板可以回答它们时,客户端会听到一个很好的预录音或音乐(缓存项目)。
IIS缓存内核模式是您的asnet“办公室”的应答机。一个应答机比一个钱便宜得多。它只是一个带磁带的微控制器,它甚至不会消耗咖啡,它只是播放磁带或类似的东西。
它运行在同一个盒子上,但它的性能要好得多,因为它只是通过它自己的低级系统资源管理来完成以最大速度发布内容的简单任务。
也就是说,如果您在性能方面拥有半动态内容,则内核模式是缓存的优选方式。
答案 1 :(得分:0)
首先,我将陈述通常需要注意的具体情况。可用的Web服务器内存,负载,页面大小,数据大小等因素
那就是说,如果没有大量的网址而且它们不必非常新鲜,那么输出缓存就会有优势我相信。特别是如果你要公开发布,那就是鼓励在isp和浏览器级别上进行缓存。因此节省了服务器的负载并缩短了返回用户或使用相同isp或代理的用户的行程。
答案 2 :(得分:0)
我认为这取决于您是否需要在运行时以编程方式以编程方式调整缓存的设置。如果不这样做,那么以声明方式设置输出缓存就没问题。