在ASP.NET MVC 3中使用SquishIt

10

我正在尝试在ASP.NET MVC 3项目中使用SquishIt来压缩CSS和JavaScript。

当我使用Render方法:

.Render("~/content/themes/base/combined_#.css");

使用随机数生成了CSS,而不是使用“#”,但未生成CSS文件的链接,我需要手动将其插入到cshtml文件中:

<link href="~/content/themes/base/combined_#.css" rel="stylesheet" type="text/css" />

但是我不知道这个随机数是什么,它添加到了文件名中。

没有 "#" 时它可以正常工作。

但是根据这篇文章, 我的印象是 Render 应该自动生成 CSS 链接:

http://www.codethinked.com/squishit-the-friendly-aspnet-javascript-and-css-squisher

我理解的对吗?


1
顺便说一句,我可以推荐使用设计时的合并/压缩工具而不是运行时的。这将允许您上传已经被压缩和合并的文件,从而消除了服务器在页面请求时执行此操作的需要。我强烈推荐 [tag:Chirpy]... 不,我与该项目没有任何关联...只是一个忠实的粉丝 - Chase Florell
为此,我可以使用http://ajaxmin.codeplex.com/,但要求在运行时执行。无论如何感谢。 - Alexan
没问题,这只是一种替代方法...就我个人而言,我认为增加不必要的服务器负载是一个荒谬的要求,但嘿,这只是我的看法。 - Chase Florell
@ChaseFlorell 性能损失只在页面编译时发生,通常是第一次加载页面时。 - alanning
事实上,由于SquishIt自动重新映射文件名,因此它可以使用远期缓存,这对于大多数编译时场景来说是一种痛苦。至少在Chirpy中,似乎要实现远期缓存,开发人员必须手动更新每个更改的FileGroup名称,否则他们会冒着用户获取陈旧内容的风险。我已经完成了手动更新的工作,这真的很痛苦。SquishIt就是太好了。Mucho karma --> Justin Etheredge - alanning
2个回答

21

以下内容对我非常有效:

@Html.Raw(Bundle.JavaScript()
        .Add("~/scripts/jquery-1.5.1.js")
        .Add("~/scripts/jquery.unobtrusive-ajax.js")
        .ForceRelease()
        .Render("~/scripts/combined_#.js")
)

@Html.Raw(
    Bundle.Css()
        .Add("~/content/site.css")
        .Add("~/content/site2.css")
        .ForceRelease()
        .Render("~/content/combined_#.css")
)

它会发出:

<script type="text/javascript" src="/scripts/combined_B8A33BDE4B3C108D921DFA67034C4611.js"></script>
<link rel="stylesheet" type="text/css" href="/content/combined_97A4455A9F39EE7491ECD741AB4887B5.css" />

当我导航到相应的URL时,将获得正确的压缩和合并资源。

还有一个Contrib项目,它提供了一个基本的Razor页面,用于将SquishIt集成到ASP.NET MVC应用程序中。


恭喜你和大卫...两个解决方案都非常好!这让我感到非常困扰。 - PJH

13
或者添加对SquishIt.Mvc程序集的引用,并使用.MvcRender方法。
例如。
@using SquishIt.Framework
@using SquishIt.Mvc

@(Bundle.JavaScript()
    .Add("~/scripts/jquery-1.5.1.js")
    .Add("~/scripts/jquery.unobtrusive-ajax.js")
    .ForceRelease()
    .MvcRender("~/scripts/combined_#.js")
)

找不到任何像这个简单的例子...谢谢! - Nelson Reis
非常好!这让我抓狂了。 - PJH

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接