SquishItでCssとJavascriptファイルを最小化

8656 ワード

SquishItは、CSSとJavaScriptファイルを簡単に圧縮して統合するコンポーネントです.同時にdotlessを用いてcssを処理する.依存コンポーネントは次のとおりです.
Dependencies
Id Version Range
YUICompressor.NET (≥ 1.7.0.0)
dotless (≥ 1.2.2.0)
AjaxMin (≥ 4.46.4422.26284)
Jurassic (≥ 2.1.1)
 
しかし、心配しないでください.依存は自動的にインストールされます.Command-Lineを使用してインストールすることができます.
PM> Install-Package SquishIt -Version 0.8.6
使いやすいです.Webを変更します.config debugがfalse
  <compilation debug="false" targetFramework="4.0">

Asp.NetMVC 3のViewはこのように使用でき、最後にマージ前のJSというcombineの先頭となるファイルが生成されます.
   @Html.Raw(Bundle.JavaScript()
.Add("~/Scripts/jquery-1.5.1.js")
.Add("~/Scripts/jquery.validate.js")
.Add("~/Scripts/jquery.validate.unobtrusive.js")
        .Render("~/Scripts/combined#.js"))

FireBugでは、Jsのリクエストが1つしかなく、このファイルは他のファイルをマージしていることがわかります.
http://localhost:6060/Scripts/combined4A287FF65BFD05F0B0BC2F292D0C8258.js
以前より3つのjsのリクエストが必要でしたが、今では1つしか必要なく、圧縮されています.CSSファイルは次のようにできます.
@Html.Raw(Bundle.Css()
      .Add("~/Content/Site.css")
      .Add("~/Content/RiskSite.css")
  .Render("~/Content/combined#.css"))

 
最後のページはhttp://localhost:6060/Content/combinedCBBF63B8C0EF232103C23C953C336D54.cssのみ要求されます
同様に、このファイルは他のcssファイルをマージし、圧縮します.
これらのファイルをディスク上に生成しないようにするには、実行時に生成させます.CSSを例にとると、いくつかの拡張が必要です.公式はすでにやっていますが、後であります.
Globalでasax:
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        RegisterGlobalFilters(GlobalFilters.Filters);
        RegisterRoutes(RouteTable.Routes);

        Bundle.Css()
    .Add("~/Content/Site.css")
    .Add("~/Content/RiskSite.css")
.AsCached("main","~/Security/Css/main");

    }
       BaseController,    Action,    :
public class BaseController : Controller
{
    public ActionResult Js(string id)
    {
        // Set max-age to a year from now
        Response.Cache.SetMaxAge(TimeSpan.FromDays(365));
        // In release, the cache breaker is appended, so always return 304 Not Modified
        Response.StatusCode = 304;

        return Content(Bundle.JavaScript().RenderCached(id), "text/javascript");
    }

    public ActionResult Css(string id)
    {
        // Set max-age to a year from now
        Response.Cache.SetMaxAge(TimeSpan.FromDays(365));
        // In release, the cache breaker is appended, so always return 304 Not Modified
        Response.StatusCode = 304;

        return Content(Bundle.Css().RenderCached(id), "text/css");
    }
}

Controller BaseController:
public class SecurityController : BaseController 
{
    //...
}
    View ,MvcRenderCachedAssetTag   SquishIt.Mvc.dll ,    :
 
@Bundle.Css().MvcRenderCachedAssetTag("main")

があればRazor も くことができます. たようなコードはこのように//Rzr.cshtml
@helper Css(string key) {
  @Bundle.Css().MvcRenderCachedAssetTag(key)
}
@helper Js(string key) {
  @Bundle.Javascript().MvcRenderCachedAssetTag(key)
}

// In a view...
@Rzr.Css("main")
@Rzr.Js("main")
が し、ページを します.
http://localhost:6060/security/LoginWithModel
 
 Html ,  :
<link rel="stylesheet" type="text/css" href="/Security/Css/main?r=CBBF63B8C0EF232103C23C953C336D54" />

Css, , 。 。
    Web     。         :

Asp.Net HttpHandlerを  してCssスタイルファイルを   
Asp.Net HttpModuleを して のHtml を して する
 
 

:Petter Liu :http://www.cnblogs.com/wintersun/ の は とブログ に され、 を するが、 の を ずにこの を し、 のページの らかな で の を えなければならない.そうしないと、 を する を する.この は、 の したブログにも されています.Petter Liu Blog.