2009-12-17 37 views
4

我有一个应用程序使用应用程序缓存来存储生成的响应,但自定义HTTP处理程序。相同的响应总是返回给同一个URL的请求,并且整个响应被整个插入到缓存中。输出缓存与应用程序缓存?

如果某个应用程序正在缓存每个URL,那么使用应用程序缓存有什么优势吗?或者我应该只使用输出缓存?

请注意,因为我正在使用自定义HTTP处理程序,所有这些都是在C#中完成的,而不是在页面指令中完成的。

回答

1

假设您不使用授权并且没有使用动态内容,则越低级别您的结果越好。最低级别是内核模式缓存。 http://learn.iis.net/page.aspx/154/walkthrough-iis-70-output-caching/

从办公室角度考虑它。 从技术上讲,请求链是:老板,秘书,电话答录机和电话线路提供商。

想象一下没有秘书的办公室。老板必须回答每一个电话。这是一个没有缓存的场景。

应用程序缓存是秘书。它处理电话,所以老板(应用程序)不必回答,只是一遍又一遍地讲同一件事。 秘书是坐在老板和外部世界之间的人。她可以处理大多数简单的情况。当没有秘书在工作时(低内存),老板会很困扰。但是秘书是一个人,所以她在晚上的某个时间回家(ASPNET应用程序在某个时间回收,而应用程序缓存得到了暴露,所以就ASPNET而言,秘书与老板共用同一个应用程序) 。

这里有一个应答机来玩。它不仅可以让秘书一次又一次地回答愚蠢的问题,而且在没有秘书的情况下屏蔽老板。这只是一台机器,当秘书和老板都不能回答时,客户端会听到预先录好的声音或音乐(缓存项目)。

IIS缓存内核模式是asnet“office”的应答机。答录机要比货币便宜得多。它只是一个带有磁带的微控制器,它甚至不消费咖啡,它只是播放一个磁带或类似的东西。

它运行在同一个盒子上,但性能更好,因为它只是简单地完成了通过自己的低级系统资源管理以最大速度发送内容的简单任务。

也就是说,如果您在性能方面具有半动态内容,则内核模式是缓存的推荐方式。

0

首先,我将陈述通常的警告,它取决于具体情况下的。因素,如可用的网络服务器的内存,负载,页面大小,数据大小等

这就是说,如果没有大量的网址,他们不必非常新鲜,那么输出缓存将我相信有优势。尤其是如果你打算公开这么做的话,那就是鼓励在isp和浏览器级别缓存。从而节省服务器上的负载并缩短返回用户或使用相同isp或代理的用户的旅程。

+0

输出缓存如何影响浏览器缓存响应的方式?使用它会导致设置过期标题以及在IIS中缓存响应? – ctford 2009-12-17 17:21:08

0

我认为这将取决于您是否需要在运行时从代码内编程调整缓存的设置。如果你不这样做,那么声明性地设置输出缓存就没问题。