2010-05-25 104 views
3

我在想,爲了增加網站的速度來做一些緩存正在被包含的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

回答

7

這是沒有必要的。您可以在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

3

客戶端瀏覽器緩存已經包含的JavaScript文件。對於jQuery等標準庫,您可以使用CDN,因爲它已被緩存在客戶端瀏覽器中。

1

我不認爲你必須使用OutputCache來緩存內容文件。您可以使用配置文件:

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

這樣的Web服務器會告訴瀏覽器緩存靜態內容(JS,CSS和圖像),而不是檢查新內容10天。

默認情況下,任何瀏覽器都應該緩存靜態內容。您可以通過在地址欄中輸入來查看Chrome中緩存的所有內容chrome://cache