asp.net-mvc – ASP.NET MVC中的CSS/JS文件的自动版本?
发布时间:2020-12-16 00:37:23 所属栏目:asp.Net 来源:网络整理
导读:我已经阅读了许多关于如何自动版本的CSS / JS文件的文章 – 但是没有一个提供了一个优雅的方式来做到这一点在ASP.NET MVC。 这个链接 – What is an elegant way to force browsers to reload cached CSS/JS files? – 为Apache提供了一个解决方案 – 但我有
我已经阅读了许多关于如何自动版本的CSS / JS文件的文章 – 但是没有一个提供了一个优雅的方式来做到这一点在ASP.NET MVC。
这个链接 – What is an elegant way to force browsers to reload cached CSS/JS files? – 为Apache提供了一个解决方案 – 但我有点困惑,这可以通过ASP.NET MVC实现? 任何人都可以提供一些建议,如何在IIS7和ASP.NET MVC上这样做,以便CSS / JS文件自动在URL中插入版本号,而不改变文件的位置? 也就是说,链接出来链接这个等可能使用URL重写或? <link rel="stylesheet" href="/css/structure.1194900443.css" type="text/css" /> <script type="text/javascript" src="/scripts/prototype.1197993206.js"></script> 谢谢 解决方法
当面对这个问题时,我在UrlHelper的Content方法中写了一系列包装函数:
编辑: 在下面的意见讨论之后,我更新了这段代码: public static class UrlHelperExtensions { private readonly static string _version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); private static string GetAssetsRoot() { string root = ConfigurationManager.AppSettings["AssetsRoot"]; return root.IsNullOrEmpty() ? "~" : root; } public static string Image(this UrlHelper helper,string fileName) { return helper.Content(string.Format("{0}/v{2}/assets/img/{1}",GetAssetsRoot(),fileName,_version)); } public static string Asset(this UrlHelper helper,string fileName) { return helper.Content(string.Format("{0}/v{2}/assets/{1}",_version)); } public static string Stylesheet(this UrlHelper helper,string fileName) { return helper.Content(string.Format("{0}/v{2}/assets/css/{1}",_version)); } public static string Script(this UrlHelper helper,string fileName) { return helper.Content(string.Format("{0}/v{2}/assets/js/{1}",_version)); } } 结合以下重写规则使用这些功能应该可以工作: <rewrite> <rules> <rule name="Rewrite assets"> <match url="^v(.*?)/assets/(.*?)" /> <action type="Rewrite" url="/assets/{R:2}" /> </rule> </rules> </rewrite> This article讨论如何在IIS7上创建重写规则。 此代码使用当前程序集的版本号作为它发出的文件路径上的查询字符串参数。当我对网站进行更新并且版本号递增时,文件上的querystring参数也是如此,因此用户代理将重新下载该文件。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 使用实体框架4.1创建复合主键
- asp.net-mvc – 可扩展的SignalR Azure – 在哪里放置Signa
- asp.net-mvc – 在MVC中,何时使用<%=%>和<%%&g
- asp.net – XMLHTTP请求的经典ASP错误
- asp.net – 如何创建Generic StateManagedCollection?
- asp.net-mvc-3 – ASP.NET MVC3条件验证EditorTemplate的嵌
- asp.net-mvc – Elmah日志文件删除,手动还是有设置?
- asp.net – 根据控制器指定不同的_Layout.cshtml
- asp.net-mvc – 如何开始使用多租户MVC应用程序
- Asp.net SignalR 应用并实现群聊功能 开源代码
推荐文章
站长推荐
- asp.net-core – ASP.NET 5和MVC6中的project.js
- asp.net-mvc-3 – 模拟控制器动作单元测试的默认
- asp.net-mvc – 在IIS7上部署MVC应用程序的最佳实
- 如何使用ASP.NET MVC项目启动Azure模拟器
- asp.net-mvc – ASP.NET MVC 4 – 301重定向Rout
- asp.net-mvc – 修改ActionFilter中的模型
- asp.net-mvc – web.config在哪里用于MVC应用程序
- asp.net-mvc – 是否有一个ASP MVC与JSTL标签等效
- asp.net-mvc-4 – 使用knockout.js我需要从服务器
- asp.net – 确保登录用户只能看到他们的数据的最
热点阅读