asp.net-mvc:javascript缓存

问题描述:

我在想,为了增加网站的速度来做一些缓存正在被包含的js文件的策略是否有意义?asp.net-mvc:javascript缓存

一个想法,我是做这样的事情:

[OutputCache(Location = OutputCacheLocation.Any, Duration = 3600)] 
public JsController : Controller 
public ActionResult JQuery() 
{ 
//I would have a ascx with the entire jquery script inside 
return View(); 
} 

,并在的Site.Master:

<%=Html.RenderAction("JQuery","JsController"); 
+0

任何原因jQuery不仅仅是一个静态文件? – balpha 2010-05-25 13:04:06

+0

@balpha没有理由,我只是想使用OutputCache属性来缓存它的内容,不知道它是否有意义 – Omu 2010-05-25 13:16:15

这是没有必要的。您可以在web.config和IIS上为JS(以及任何静态文件)指定缓存策略。

对于特别是jQuery,你可以引用谷歌CDN库。

http://code.google.com/apis/ajaxlibs/documentation/#jquery

+0

不仅没有必要,它是有害的,因为它会导致JavaScript被嵌入到每个HTML页面中使每个HTML页面下载量更大。 – 2010-05-25 13:04:32

+0

@Claudio Redi你能告诉我如何在web.config中做到这一点吗? – Omu 2010-05-25 13:24:12

+0

@Omu:哪个IIS版本? – 2010-05-25 13:28:55

客户端浏览器缓存已经包含的JavaScript文件。对于jQuery等标准库,您可以使用CDN,因为它已被缓存在客户端浏览器中。

我不认为你必须使用OutputCache来缓存内容文件。您可以使用配置文件:

<system.webServer> 
    <staticContent> 
    <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="10.00:00:00" /> 
    </staticContent> 
</system.webServer> 

这样的Web服务器会告诉浏览器缓存静态内容(JS,CSS和图像),而不是检查新内容10天。

默认情况下,任何浏览器都应该缓存静态内容。您可以通过在地址栏中输入来查看Chrome中缓存的所有内容chrome://cache