我有一个ASP.NET MVC应用程序,我现在使用SquishIt帮助将我的所有CSS和javascript文件捆绑到从网络服务器下载的单个元素中,以便每次点击我的网站.我知道最近MVC推出了自己的捆绑器.有没有人做过两者之间的比较?某种情况对另一种情况更好吗?或者它们基本相同?使用MVC捆绑包,IIS是否仍需要对站点目录的写访问权限?
您可能会有任何想法和评论.
谢谢.
我正在尝试使用SquishIt来缩小ASP.NET MVC 3项目中的CSS和Javascripts.
当我使用Render方法时:
.Render("~/content/themes/base/combined_#.css");
Run Code Online (Sandbox Code Playgroud)
用随机数而不是#生成css,但是没有生成到css文件的链接,我需要手动将其插入到cshtml文件中:
<link href="~/content/themes/base/combined_#.css" rel="stylesheet" type="text/css" />
Run Code Online (Sandbox Code Playgroud)
但我不知道这个随机数,添加到文件名.
没有#它工作正常.
但我觉得Render应该根据这篇文章自动生成css链接:
http://www.codethinked.com/squishit-the-friendly-aspnet-javascript-and-css-squisher
我对么?
我想知道是否有任何VS 2010扩展用于触发requirejs优化,类似于squishit的工作方式:
谁能告诉我是什么原因导致Squishit在生产模式下重建捆绑包?
例如,如果我创建以下包,则会按预期创建文件"Site.Master_ {GUID} .css".
<%= Bundle.Css()
.Add("~/css/reset.css")
.Add("~/css/typography.css")
.Add("~/css/styles.css")
.Add("~/MasterPages/Site.Master.css")
.Render("~/Cache/Site.Master_#.css")
%>
Run Code Online (Sandbox Code Playgroud)
但是,如果我删除文件包文件,则不会重新创建.我通过反复试验发现,如果我将web.config文件更改为
<compilation debug="true" targetFramework="4.0" />
Run Code Online (Sandbox Code Playgroud)
然后回到假
<compilation debug="false" targetFramework="4.0" />
Run Code Online (Sandbox Code Playgroud)
下次请求页面然后重建包,但我想知道:
a)Squishit如何决定是否应该建造或重建特定的捆绑
b)如果有一种公认的方法可以重置Squishit来重建所有捆绑包 - 例如在缓存清理或站点更新之后.
谢谢.
如何实现SquishIt在View Pages中捆绑Css/Js并在Master页面中渲染它?我以为我可以在Render部分上方使用ContentPlaceHolder,但似乎有一些奇怪的行为,它有时会添加3个文件(视图页面中有1个文件,母版页中有2个文件)但是其他时候会忽略从View中添加的文件页.
的Index.aspx
<asp:Content ContentPlaceHolderID="CssFiles" runat="server">
<% CssHelper.Add("home.css"); %>
</asp:Content>
Run Code Online (Sandbox Code Playgroud)
的Site.Master
<asp:ContentPlaceHolder ID="CssFiles" runat="server" />
<% CssHelper.Add("reset.css"); %>
<% CssHelper.Add("master.css"); %>
<%=CssHelper.Render() %>
Run Code Online (Sandbox Code Playgroud)
我目前的解决方案是围绕SquishIt的静态Bundle类的静态包装器,它将BundleBuilder保存在HttpContext.Current.Items中.
我很好奇这是否已成功完成以及如何做到这一点.
有没有人对这两个库(Combres2和SquishIt)进行比较?如果一个库比另一个库好,我也想知道原因.
我发现文章说Combres2的压缩效果比SquishIt好.但差不多一年前.
我有一个完全有效的CSS样式表,它可以工作,并且可以识别查询,但是当我使用SquishIt缩小(并连接)样式表时,媒体查询似乎停止工作,我无法弄清楚原因.
这是缩小的CSS,美化:
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video {
border:0;
outline:0;
font-size:100%;
font:inherit;
vertical-align:baseline;
background:transparent;
color:inherit;
margin:0;
padding:0;
}
article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section {
display:block;
}
body {
line-height:1;
word-wrap:break-word;
overflow-x:hidden;
font-family:"Helvetica Neue","Lucida Grande","Segoe UI",Arial,Helvetica,Verdana,sans-serif;
}
ol,ul {
list-style:none;
margin-bottom:1em;
margin-left:30px;
}
blockquote,q {
quotes:none;
}
blockquote:before,blockquote:after,q:before,q:after {
content:none;
}
:focus {
outline:0;
}
table {
border-collapse:collapse;
border-spacing:0;
}
th {
text-align:left;
}
.layout-section {
width:93.75%;
text-align:left;
margin:0 auto;
}
header#layout-header {
margin-bottom:20px;
padding:12px 0;
}
header#layout-header h1 {
display:inline-block;
font-family:Calibri,Candara,Segoe,"Segoe UI",Optima,Arial,Helvetica,sans-serif;
font-weight:700;
font-size:2.4em;
margin:0 auto;
}
section#layout-content …Run Code Online (Sandbox Code Playgroud) 我已经使用Squishit来缩小和捆绑JS并在IIS 7.5中压缩Bundled file I enabled选项(启用静态内容压缩)
问题是Js没有得到压缩,我只是得到了缩小的js但是如果我启用了动态内容压缩,那么Js会被压缩.
现在动态压缩的问题在于它不会缓存文件,并且在每个请求上都必须进行CPU占用时间的压缩.
有人可以帮我解释为什么js不会在静态内容压缩模式下被压缩
这是在客户端发送js的理想方式
JS -> Minify JS (Squishit) -> Compress (Static /Dynamic)
Run Code Online (Sandbox Code Playgroud) 在使用第三方JQuery插件的MVC3应用程序中使用SquishIt时,我遇到了大量错误.在我的开发机器上,如果我在Bundle命令上设置ForceDebug方法,一切正常,JS正常处理.但是,如果我设置ForceRelease方法(在推出到生产之前进行测试),当我启动网站时,FireFox会显示"不是函数"错误.我尝试compilation debug="true"在web.config中设置没有任何改进.
以下是我的_layout.cshtml文件中的JS调用.所有捆绑都适用于标准JQuery插件:
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js"></script>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.validate.unobtrusive.min.js"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-ui-1.8.18.custom.min.js")"></script>
@(Bundle.JavaScript()
.Add("~/Scripts/modernizr-2.5.3.js")
.Add("~/Scripts/jquery.fileinput.js")
.Add("~/Scripts/jquery.numeric.js")
.Add("~/Scripts/jquery.maskedinput-1.3.min.js")
.Add("~/Scripts/jquery.maxlength_countdown.js")
.Add("~/Scripts/jquery.qtip.min.js")
.Add("~/Scripts/jquery.pnotify-1.1.0.min.js")
.Add("~/Scripts/fileuploader.js")
.Add("~/Scripts/jquery.dropdownchecklist-1.4.js")
.Add("~/Scripts/jquery.blockUI.js")
.Add("~/Scripts/jquery.textarearesizer.min.js")
.ForceRelease()
.MvcRender("~/CompiledContent/combined_#.js")
)
Run Code Online (Sandbox Code Playgroud)
以下是FireFox显示的错误示例.这会根据我在捆绑包中的内容而改变:
function (n) {var i = (n.browser.msie ? "paste" : "input") + ".mask", t = window.orientation != undefined;n.mask = {definitions: {9: "[0-9]", a: "[A-Za-z]", '*': "[A-Za-z0-9]"}, dataName: "rawMaskFn"}, n.fn.extend({caret: function (n, t) {if (this.length != 0) {if (typeof n == "number") {return t = …
在我的本地计算机上,以下代码表现完美.
@Html.Raw(SquishIt.Framework.Bundle.Css()
.Add("~/css/normalize.css")
.Add("~/css/nonsemantic.css")
.Add("~/css/custom/basic/site.css")
.ForceRelease()
.Render("~/css/style.min.css"))
Run Code Online (Sandbox Code Playgroud)
在指定的目录下创建一个新的minified style.min.css文件.
但是,当我将我的代码部署到我的托管服务提供商时,我得到一个UnauthorizedAccessException,消息为"访问路径' C:\ ...\style.min.css '被拒绝".
我不认为这是我的SquishIt实现的问题,但我不能为我的生活想出这个.
我使用"SquishIt"来合并我的.js和.css文件.问题是当所有其他资源都是200(来自缓存)时,squishit bundle会导致304(未更改).如果我以常规方式放置文件,我得到想要的200结果.我的代码示例:
@MvcHtmlString.Create(@Bundle.JavaScript().Add("~/Scripts/Libs/jquery.cookie.js").Add("~/Scripts/Libs/jquery.dynatree.min.js").Add("~/Scripts/Libs/jquery.json-2.3.min.js").Add("~/Scripts/Libs/jsrender.js").Add("~/Scripts/Libs/jstorage.min.js").Add("~/Scripts/Common/utils.js").Add("~/Scripts/DataServices/AccountDataServices.js").Add("~/Scripts/AccountSelection.js").WithMinifier<SquishIt.Framework.Minifiers.JavaScript.MsMinifier>().Render("~/Scripts/AccSelectionscriptBandle_#.js"))
Run Code Online (Sandbox Code Playgroud)
结果:

编辑:我正在使用"Debug = false"; 所有其他资源都是200(来自缓存)
@{
ViewBag.Title = "Home Page";
SquishIt.JavaScript.Add(
Url.Content("~/Scripts/jquery_ui.js"),
Url.Content("~/Scripts/jquery_1.4.4.js")
);
}
@SquishIt.JavaScript.Render(Url.Content("~/Scripts/min.js"))
Run Code Online (Sandbox Code Playgroud)
它显示如下:
<script type="text/javascript" src="/Scripts/jquery_ui.js"></script>`
<script type="text/javascript" src="/Scripts/jquery_1.4.4.js"></script>`
Run Code Online (Sandbox Code Playgroud)
"min.js"在哪里?
这两个js文件没有组合成一个名为min.js的js?
谢谢!