我想我对他们感到困惑.
浏览器是否缓存所有js或css文件?
如果我使用IIS缓存并且不使用OutputCache会发生什么?
如果我同时使用它们会发生什么?
浏览器缓存是您在页面上设置的标题命令,并向客户端浏览器发出指令,以使页面在客户端计算机缓存上保留一段时间,而不是从服务器读回.
静态缓存是指为所有用户通用的内容设置缓存,以及动态缓存,如果您为同一页面设置不同的缓存并依赖于用户或其他参数.你也可以说静态是不改变的内容(例如图像,html页面等),而动态是像aspx页面那样改变的内容的缓存.
IIS可以为图像和所有这类内容设置缓存,这些内容不会发生变化,您可以向浏览器说“保持”很长时间.
您需要使用所有缓存的组合来获得最佳结果,而不是使用什么和不使用什么.静态内容的大量缓存不会发生很大变化,动态内容缓存也会减少.
Does browser cache all js or css files?
浏览器只做你说他做的事.因此,您需要在页面标题上设置浏览器,以确定浏览器将此文件保留在客户端缓存上的时间.如果你没有设置任何东西,那么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.现在我把它寄给你. (等待时间600毫秒70毫秒网络滞后)2000毫秒下载法师
客户端B浏览器:请给我页面default.aspx
服务器响应:好的等一下.让我看看OutpuCache上有它吗?是的,我从缓存中读取并发送它. `(等待时间100毫秒70毫秒网络滞后)2000毫秒下载法师
客户端A浏览器:请给我页面default.aspx,我的上一个缓存说该文件有日期:12 / Mar / 2012.
服务器响应:嗯您不需要重新读取它,因为未修改,请使用本地缓存. (等待时间80 ms 70ms网络滞后)0ms下载页面
当在OutputCache上找到页面时,对用户的影响就是不等待页面开始显示这么多东西.
当页面未被修改时,效果是用户几乎正确地看到页面,因为不等待页面下载.
当内容是静态的(如图像)并在缓存中找到时,浏览器会以正确的方式显示而不询问服务器,因此这是用户更快地看到本地缓存上的内容的方式.