IIS (Dynamic and Static)
缓存,OutPutCache
和browser cache
有何区别?
我想我对他们感到困惑。
浏览器是否缓存所有js或css文件?
如果我使用IIS
缓存并且不使用OutputCache
会发生什么?
如果我同时使用它们会发生什么?
答案 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上找到的页面时,用户的效果就是不等待页面开始显示这么多内容。
当找不到修改的页面时,效果是用户几乎正确地看到页面,因为不等待页面下载。
当内容是静态的(如图像)并在缓存中找到时,浏览器会以正确的方式显示而不询问服务器,因此这是用户更快地查看本地缓存上的内容的方式。