asp.net-mvc:javascript缓存

asp.net-mvc:javascript缓存,javascript,asp.net-mvc,caching,Javascript,Asp.net Mvc,Caching,我在想,为了提高网站的速度,缓存包含的js文件是否有意义 我的一个想法是这样做: [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(); }

我在想,为了提高网站的速度,缓存包含的js文件是否有意义

我的一个想法是这样做:

[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();
} 
并且在网站上。master:

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

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

特别是对于jQuery,您可以从GoogleCDN中引用库


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

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

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

这样,web服务器将告诉浏览器缓存静态内容(JS、CSS和图像),并在10天内不检查新内容


默认情况下,任何浏览器都应该缓存静态内容。通过在地址栏中键入
chrome://cache

jQuery不仅仅是一个静态文件,有什么原因吗?@balpha没有原因,我只是想使用OutputCache属性来缓存它的内容,不知道它是否有意义,不仅是没有必要,这是有害的,因为它会导致javascript嵌入到每个HTML页面中,使每个HTML页面的下载量变大。@Claudio Redi IIS 7.5但我的应用程序在某些带有IIS 6的服务器上,因此,如果使用IIS6,恐怕您无法在web.config上执行此操作。这里有一个关于如何在IIS5上启用缓存但适用于IIS6的教程。IIS7与@Claudio Redi类似。这里解释了如何设置缓存的过期时间,这意味着默认情况下会缓存文件,无需执行此操作。缓存不会更改或很少更改的静态文件的正确方法是添加一个长过期头。用两行解释有点长。也许你可以看看这个缓存教程。请注意,如果向文件添加过期头,确保客户端获得新版本的唯一方法是更改文件名。