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
Asp.NetMVC 3のViewはこのように使用でき、最後にマージ前のJSというcombineの先頭となるファイルが生成されます.
FireBugでは、Jsのリクエストが1つしかなく、このファイルは他のファイルをマージしていることがわかります.
http://localhost:6060/Scripts/combined4A287FF65BFD05F0B0BC2F292D0C8258.js
以前より3つのjsのリクエストが必要でしたが、今では1つしか必要なく、圧縮されています.CSSファイルは次のようにできます.
最後のページはhttp://localhost:6060/Content/combinedCBBF63B8C0EF232103C23C953C336D54.cssのみ要求されます
同様に、このファイルは他のcssファイルをマージし、圧縮します.
これらのファイルをディスク上に生成しないようにするには、実行時に生成させます.CSSを例にとると、いくつかの拡張が必要です.公式はすでにやっていますが、後であります.
Globalでasax:
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.