asp.net-mvc – 如何在版本信息中包含静态内容
发布时间:2020-12-16 09:23:30 所属栏目:asp.Net 来源:网络整理
导读:我的静态内容缓存在客户端上有问题(静态我的意思是js,css,jpeg,gif等). (并且客户端我的意思是我的开发机器大部分时间). 因此,页面要么抛出脚本错误,要么无法正确显示.我不是Rails开发人员,但我及时读了几本关于它的书.我记得很清楚的一点是,它会在包含文件
我的静态内容缓存在客户端上有问题(静态我的意思是js,css,jpeg,gif等). (并且客户端我的意思是我的开发机器大部分时间).
因此,页面要么抛出脚本错误,要么无法正确显示.我不是Rails开发人员,但我及时读了几本关于它的书.我记得很清楚的一点是,它会在包含文件的末尾添加一些魔术版本号,因此它就变成了 <script src="~/Scripts/Invoice.js?201112091712" type="text/javascript"></script> 如果您修改该内容文件,它会生成一个新的版本号,因此它会生成一个不同的include语句,因此,客户端认为它是一个新内容,并且在不检查其缓存的情况下加载它. asp.net-mvc 3& IIS 7支持这个,或者你知道任何模仿这种行为的工具吗? 谢谢,Haz?m 解决方法
我已经在我的一个项目中完成了这项工作,如果您喜欢,请随时使用我的助手:
public static class VersionedContentExtensions { public static MvcHtmlString VersionedScript(this HtmlHelper html,string file) { return VersionedContent(html,"<script src="{0}" type="text/javascript"></script>",file); } public static MvcHtmlString VersionedStyle(this HtmlHelper html,"<link href="{0}" rel="stylesheet" type="text/css">",file); } private static MvcHtmlString VersionedContent(this HtmlHelper html,string template,string file) { string hash = HttpContext.Current.Application["VersionedContentHash_" + file] as string; if (hash == null) { string filename = HttpContext.Current.Server.MapPath(file); hash = GetMD5HashFromFile(filename); HttpContext.Current.Application["VersionedContentHash_" + file] = hash; } return MvcHtmlString.Create(string.Format(template,file + "?v=" + hash)); } private static string GetMD5HashFromFile(string fileName) { FileStream file = new FileStream(fileName,FileMode.Open); MD5 md5 = new MD5CryptoServiceProvider(); byte[] retVal = md5.ComputeHash(file); file.Close(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < retVal.Length; i++) { sb.Append(retVal[i].ToString("x2")); } return sb.ToString(); } } 像这样使用它们: @Html.VersionedScript("/Scripts/sccat.core.js") (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 哪种类型的缓存适合在Umbraco项目中使用,如
- asp.net-mvc – IE 11 SignalR不工作
- ASP.NET Core Mvc中空返回值的处理方式
- asp.net – 在代码GZipping中的IIS压缩?
- asp.net – Microsoft Report Viewer 2010部署
- Razor in ASP.NET MVC 3.0
- asp.net – 在SQL中选择查询列中的所有值
- 使用ASP.NET MVC 3助手的标题属性的渲染跨度标签
- asp-classic – VBScript函数名称最大长度
- asp.net-mvc – requestValidationMode =“2.0”实际上是做
推荐文章
站长推荐
- 如何阻止IIS 8停止空闲的ASP.NET应用程序?
- ASP.NET FileUpload – 如何更改“浏览…”按钮说
- asp.net-mvc – FormsAuthentication.RedirectFr
- asp.net-mvc – 在Azure中启用自定义错误
- asp.net core 2.0 Microsoft.Extensions.Logging
- asp.net-mvc – @ Html.ValidationSummary是否适
- MVC中TempData、ViewData和ViewBag的区别
- 在使用ASP.NET会话时是否可以强制请求并发?
- asp.net-mvc – 我没有使用GET方法获取友好的URL
- vbscript – 服务器端注释:ASP Classic中相当于
热点阅读