Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 使用Razor在Asp.NETMVC3上组合、缩小和GZIP您的样式和脚本的完整解决方案_Asp.net Mvc 3_Caching_Gzip_Minify - Fatal编程技术网

Asp.net mvc 3 使用Razor在Asp.NETMVC3上组合、缩小和GZIP您的样式和脚本的完整解决方案

Asp.net mvc 3 使用Razor在Asp.NETMVC3上组合、缩小和GZIP您的样式和脚本的完整解决方案,asp.net-mvc-3,caching,gzip,minify,Asp.net Mvc 3,Caching,Gzip,Minify,对不起,我的英语不好,但我想这不会是一个问题。我只是不想分享一个很好的助手类,我使用。开始之前,请下载。这是一个使用gzip的开源库 让我们从web.config开始(我将关注IIS7)。这里我们对我们的应用程序说,向cssh或jsh扩展发出的任何请求都将转发给类MinifierHelper。我选择使用这些扩展(cssh和jsh),如果出于任何原因,我们不想缩小特定的脚本或样式,请按照您通常使用的方式使用它 <system.webServer> <handlers>

对不起,我的英语不好,但我想这不会是一个问题。我只是不想分享一个很好的助手类,我使用。开始之前,请下载。这是一个使用gzip的开源库

让我们从web.config开始(我将关注IIS7)。这里我们对我们的应用程序说,向csshjsh扩展发出的任何请求都将转发给类MinifierHelper。我选择使用这些扩展(csshjsh),如果出于任何原因,我们不想缩小特定的脚本或样式,请按照您通常使用的方式使用它

<system.webServer>
  <handlers>
    <remove name="ScriptHandler" />
    <remove name="StyleHandler" />
    <add name="ScriptHandler" verb="*" path="*.jsh" type="Site.Helpers.MinifierHelper" resourceType="Unspecified" />
    <add name="StyleHandler" verb="*" path="*.cssh" type="Site.Helpers.MinifierHelper" resourceType="Unspecified" />
  </handlers>
</system.webServer>
嗯。现在我将演示如何使用我们的类。他认为:

<link href="/Styles/Folder/File.cssh" type="text/css" rel="stylesheet" />
<script src="/Scripts/Folder/File.jsh" type="text/javascript"></script>
要组合和缩小全局脚本/样式,请将当前行添加到视图中:

<link href="@MinifierHelper.setUrl("/Styles/Global/global-min.css")" type="text/css" rel="stylesheet" />
<script src="@MinifierHelper.setUrl("/Scripts/Global/global-min.js")" type="text/javascript"></script>
<link href="@MinifierHelper.setUrl("/Styles/Curriculum/index.css")" type="text/css" rel="stylesheet" />
要缩小特定脚本/样式(特定于页面),请将当前行添加到视图中:

<link href="@MinifierHelper.setUrl("/Styles/Global/global-min.css")" type="text/css" rel="stylesheet" />
<script src="@MinifierHelper.setUrl("/Scripts/Global/global-min.js")" type="text/javascript"></script>
<link href="@MinifierHelper.setUrl("/Styles/Curriculum/index.css")" type="text/css" rel="stylesheet" />
如果类找不到特定的方法,它将触发默认方法。默认方法使用指定的相同文件夹/名称缩小脚本/样式

protected override void addDefaultScripts()
{
    this.files.Add("~/Scripts/" + this.folderName + "/" + this.fileName + ".js");
}

protected override void addDefaultStyles()
{
    this.files.Add("~/Styles/" + this.folderName + "/" + this.fileName + ".css");
}
不要忘记关闭区域和类

    #endregion
}
就这样。我希望你们已经理解了

我忘了告诉你最后一件事。在web.config中,在AppSettings中添加一个名为PublishDate的键。我在值中输入了一个包含完整日期和时间的字符串(例如:261020111245)。目标是独一无二。此密钥将用于缓存缩小的脚本。如果不创建此密钥,应用程序将不会使用缓存。我建议用这个。所以每次你更新脚本/样式时,也要更新你的发布日期

<add key="PublishDate" value="261020111245" />

Mindscape Web Workbench是一个很好的工具,可以帮助您完成所需的项目

以下是一篇关于它的好博客:


非常好!由于我们希望在本网站上看到的问题/答案格式的性质,最好将您的解决方案移至一个答案,然后接受您的答案。谢谢。由于我是新会员,我无法回答自己的问题:)那将是个问题!我鼓励你继续使用这个网站,当你得到足够的代表(你不需要超过25个),然后你可以创建一个答案:)谢谢你的提示。我会的。我需要一些积极的反馈来获得一些分数,呵呵。+1我喜欢人们在项目中思考这类事情!
protected override void addDefaultScripts()
{
    this.files.Add("~/Scripts/" + this.folderName + "/" + this.fileName + ".js");
}

protected override void addDefaultStyles()
{
    this.files.Add("~/Styles/" + this.folderName + "/" + this.fileName + ".css");
}
    #endregion
}
<add key="PublishDate" value="261020111245" />