IIS(动态和静态)缓存,OutPutCache和浏览器缓存之间有什么区别

时间:2012-03-12 08:26:23

标签: asp.net iis caching iis-7 outputcache

IIS (Dynamic and Static)缓存,OutPutCachebrowser cache有何区别?

我想我对他们感到困惑。

浏览器是否缓存所有js或css文件?

如果我使用IIS缓存并且不使用OutputCache会发生什么?

如果我同时使用它们会发生什么?

1 个答案:

答案 0 :(得分:12)

OutPutCache是一个页面/控件缓存,保存在服务器上以从此页面/控件的渲染中获得处理速度。

browser cache是您在页面上设置的标题命令,并向客户端浏览器发出指令,以使页面在客户端计算机缓存上保留一段时间,而不是从服务器读回。

static cache是为所有用户共有的内容设置缓存,而Dynamic cache是为同一页面设置不同的缓存并依赖于用户或其他用户参数。你也可以说静态是不改变的内容(例如图像,html页面等),而动态是内容的缓存,就像aspx页面一样。

IIS可以为图像和所有这类内容设置缓存,这些内容不会发生变化,您可以向浏览器说“保持”很长时间。

您需要使用所有缓存的组合来获得最佳结果,而不是使用什么和不使用什么。静态内容的大量缓存不会发生很大变化,动态内容的缓存也会减少。

  

浏览器是否缓存所有js或css文件?

浏览器只会按照你说的去做。因此,您需要将页眉设置为浏览器,以确定浏览器将此文件保留在客户端缓存上的时间长度。如果你没有设置任何东西,那么IIS设置静态内容,如Js和Css和图像,文件创建日期,浏览器可以使用它来询问服务器是否需要再次读取它。

静态和动态

关于静态和动态缓存的另一个信息是,动态缓存上的浏览器询问服务器是否需要更新,如果答案为是,则再次读取页面。这样浏览器总是调用服务器,但并不总是返回内容。

另一种方式是静态,在这个缓存中浏览器缓存内容并且永远不要求服务器重新读取它。例如,对于静态内容的图像,您设置了一个大缓存,浏览器从不再询问服务器,而是使用客户端缓存中的图像。

您可以在web.config

上设置此静态内容缓存
<staticContent>
    <clientCache cacheControlMaxAge ="8.00:00:00" cacheControlMode="UseMaxAge" />
</staticContent>

浏览器的动态缓存是您需要以编程方式进行的操作。您在标题上设置参数,当浏览器询问内容时,您会阅读此参数,并希望重播内容,使用新内容或使用命令从缓存中读取。

一些例子:Create ETag filter in ASP.NET MVC

http://jagbarcelo.blogspot.com/2009/03/conditional-get-and-etag-implementation.html

Generating etags for images in asp.net?

 if I use both IIS cache and OutputCache?
实际上这是两个不同的认为他们自己的行为。让我们看看发生了什么的一些步骤。

客户端浏览器:请给我页面default.aspx

服务器响应:好的等一下。让我看看我在OutpuCache上有它吗?不,我现在就把它保存到OutPutCache。现在我发给你。 (waiting time 600 ms + 70ms Network Lag) + 2000ms to download the mage

客户端B浏览器:请给我页面default.aspx

服务器响应:好的等一下。让我看看我在OutpuCache上有它吗?是的,我从缓存中读取它并发送它。 `(等待时间100毫秒+ 70毫秒网络延迟)+ 2000毫秒下载法师

客户端浏览器:请给我页面default.aspx,我的上一个缓存说该文件有日期:12 / Mar / 2012。

服务器响应:嗯您不需要重新读取它,因为未修改,请使用本地缓存。 (waiting time 80 ms + 70ms Network Lag) + 0ms to download the page

在OutputCache上找到的页面时,用户的效果就是不等待页面开始显示这么多内容。

当找不到修改的页面时,效果是用户几乎正确地看到页面,因为不等待页面下载。

当内容是静态的(如图像)并在缓存中找到时,浏览器会以正确的方式显示而不询问服务器,因此这是用户更快地查看本地缓存上的内容的方式。