代码之家  ›  专栏  ›  技术社区  ›  ctford

输出缓存与应用程序缓存?

  •  4
  • ctford  · 技术社区  · 15 年前

    我有一个应用程序,它使用应用程序缓存存储生成的响应,但自定义HTTP处理程序。对于同一个URL的请求,总是返回相同的响应,并且整个响应都插入到缓存中。

    如果应用程序正在每个URL缓存,那么使用应用程序缓存有什么好处吗?还是应该只使用输出缓存?

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

    3 回复  |  直到 15 年前
        1
  •  1
  •   George Polevoy    15 年前

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

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

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

    应用程序缓存是一个秘书。它处理电话,这样老板(应用程序)就不必只回答一遍又一遍的同一件事。 秘书是介于老板和外部世界之间的人。她能应付最简单的情况。当没有秘书在工作时,老板会很烦恼(记忆力差)。

    但是秘书是一个普通人,所以她晚上某个时候回家(aspnet应用程序在某个时候回收,应用程序缓存暴露,所以在aspnet方面,秘书与老板共享同一个应用程序donain)。

    这里有一台答录机。它不仅能让秘书一次又一次地回答愚蠢的问题,而且在没有秘书的情况下也能让老板知道。这只是一台机器,客户可以听预先录制好的声音或音乐(缓存项目),而秘书和老板都不能回答。

    IIS缓存内核模式是ASNET“Office”的应答机。答录机比秘书便宜得多。它只是一个带磁带的微控制器,它甚至不喝咖啡,它只是回放磁带或类似的东西。

    好吧,它运行在同一个盒子上,但是它的性能要好得多,因为它只是用它自己的低级系统资源管理以最快的速度分发内容的简单任务。

    也就是说,如果在性能方面有半动态的内容,那么内核模式是缓存的最佳方式。

        2
  •  0
  •   dove    15 年前

    首先,我会说明 通常需要注意的是,这取决于 具体情况。可用的Web服务器内存、负载、页面大小、数据大小等因素。

    也就是说,如果没有大量的URL,而且它们不需要非常新鲜,那么 输出缓存将具有边缘 我相信。特别是如果您打算公开这样做,这将鼓励在ISP和浏览器级别上进行缓存。这样可以节省服务器上的负载,缩短返回用户或使用相同ISP或代理的用户的行程。

        3
  •  0
  •   John Lemp Chris Heald    15 年前

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