日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

ASP.NET MVC 扩展HtmlHelper类为 js ,css 资源文件添加版本号

發布時間:2024/7/19 asp.net 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET MVC 扩展HtmlHelper类为 js ,css 资源文件添加版本号 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

寫在前面

在項目部署當中會需要更新 css 文件或 js 等資源文件,為了避免由于瀏覽器緩存的原因無法加載新的 css 或 js ,一般的做法是在資源文件的后面加上一個版本號來解決,這樣瀏覽器就會去服務器下載新的資源文件。

如果某個 css 文件被多個頁面引用,那么我們就需要去每個頁面一個一個的去修改,這樣做的方式屬于重復性的動作,而且有的時候還會漏掉需要修改的頁面,所以我們就需要一個自動管理資源文件版本號的功能

先看效果

如何實現

通過擴展HemHelper 類,添加 為 js 和 css 文件處理的方法

?

public static class HtmlHelperExtension{/// <summary>/// 自動為 Js 文件添加版本號/// </summary>/// <param name="html"></param>/// <param name="contentPath"></param>/// <returns></returns>public static MvcHtmlString Script(this HtmlHelper html, string contentPath){return VersionContent(html, "<script src=\"{0}\" type=\"text/javascript\"></script>", contentPath);}/// <summary>/// 自動為 css 文件添加版本號/// </summary>/// <param name="html"></param>/// <param name="contentPath"></param>/// <returns></returns>public static MvcHtmlString Style(this HtmlHelper html, string contentPath){return VersionContent(html, "<link href=\"{0}\" rel=\"stylesheet\" type=\"text/css\">", contentPath);}private static MvcHtmlString VersionContent(this HtmlHelper html, string template, string contentPath){var httpContenxt = html.ViewContext.HttpContext;string hashValue = VersionUtils.GetFileVersion(httpContenxt.Server.MapPath(contentPath));contentPath = UrlHelper.GenerateContentUrl(contentPath, httpContenxt) + "?v=" + hashValue;return MvcHtmlString.Create(string.Format(template, contentPath));}} View Code

?

?新建一個 VersionUtils 類來生成資源文件的版本號,下面的代碼實現了計算文件的 hash 值作為版本號

public static class VersionUtils{public static Dictionary<string, string> FileHashDic = new Dictionary<string, string>();public static string GetFileVersion(string filePath){/** 生成版本號有三種方式* 1. 將文件的將最后一次寫入時間作為版本號 => File.GetLastWriteTime(filePath).ToString("yyyyMMddHHmmss");* 2. 從配置文件中讀取預先設定版本號 => ConfigurationManager.AppSettings["Js_CSS_Version"];* 3. 計算文件的 hash 值 */string fileName = Path.GetFileName(filePath);// 驗證是否已計算過文件的Hash值,避免重復計算if (FileHashDic.ContainsKey(fileName)){return FileHashDic[fileName];}else{string hashvalue = GetFileShaHash(filePath); //計算文件的hash值 FileHashDic.Add(fileName, hashvalue);return hashvalue;}}private static string GetFileShaHash(string filePath){string hashSHA1 = String.Empty;//檢查文件是否存在,如果文件存在則進行計算,否則返回空值if (System.IO.File.Exists(filePath)){using (System.IO.FileStream fs = new System.IO.FileStream(filePath, System.IO.FileMode.Open, System.IO.FileAccess.Read)){//計算文件的SHA1值System.Security.Cryptography.SHA1 calculator = System.Security.Cryptography.SHA1.Create();Byte[] buffer = calculator.ComputeHash(fs);calculator.Clear();//將字節數組轉換成十六進制的字符串形式StringBuilder stringBuilder = new StringBuilder();for (int i = 0; i < buffer.Length; i++){stringBuilder.Append(buffer[i].ToString("x2"));}hashSHA1 = stringBuilder.ToString();}//關閉文件流 }return hashSHA1;}}

?

如何使用

在View中的使用方式

@Html.Style("~/Content/table.css") @Html.Style("~/Content/wxSite.css") @Html.Script("~/Scripts/jquery-1.10.2.min.js")

?

參考文章

https://www.cnblogs.com/aehyok/archive/2012/11/17/2774500.html

轉載于:https://www.cnblogs.com/wubh/p/9512391.html

總結

以上是生活随笔為你收集整理的ASP.NET MVC 扩展HtmlHelper类为 js ,css 资源文件添加版本号的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲30p | 久久成人人人人精品欧 | 欧美爽爽 | 五月天综合 | 免费成人在线观看动漫 | 另类激情亚洲 | 欧美xxxx非洲 | 美女伦理水蜜桃4 | 天堂网av2018 | 日韩专区第一页 | 色妞色视频一区二区三区四区 | 国产精品视频久久久久久久 | 雷电将军和丘丘人繁衍后代视频 | 性激烈视频在线观看 | 久草精品在线观看 | 欧美xxxxx性| 黑人干亚洲人 | 人妻少妇精品中文字幕av蜜桃 | 天天干夜夜艹 | 99r在线视频| 国产精品天堂 | 男人天堂综合 | 免费看毛片的网站 | 国产aaa级片 | 色爱色| 久久人精品 | 欧美综合久久久 | 特大巨交吊性xxxx | 四季av国产一区二区三区 | 国产aⅴ| 欧美天天性影院 | 日韩一区欧美 | 波多野结衣大片 | 日本裸体xx少妇18在线 | 国产激情一区 | 日韩精品一区中文字幕 | 精品中文字幕一区二区 | 亚洲一区二区三区四区在线观看 | 欧美精品在线免费观看 | 亚洲av成人精品午夜一区二区 | 亚洲黄色网络 | 无码人妻精品一区二区三区9厂 | 亚洲第一黄色网址 | 成人自拍视频在线观看 | 五月天中文字幕在线 | 欧美少妇xx | 久久精品视频免费看 | xxxxx国产| 亚洲精品一区二三区 | 黑人性生活视频 | 亚洲综合伊人久久 | 国产成人资源 | 69日本xxxxxxxxx30 在线波多野结衣 | 国产黄色观看 | 999www| 青青草成人在线 | 日韩在线观看视频免费 | jizz欧美大全 | 爱草av| 亚洲 另类 春色 国产 | 深夜福利免费视频 | 99热1| 思思99re| 欧美手机看片 | 日本一本在线视频 | 国产精品网站在线观看 | 欧美一级淫 | 18av在线播放 | 久久这里 | 成人欧美性 | 亚洲视频久久久 | 中文字幕av久久 | 看黄色网址 | 亚洲国产精品久久人人爱 | 少妇太爽了在线观看 | 奇米色婷婷 | av大全在线 | 午夜久久电影 | 亚洲精品视 | 亚洲系列在线 | 探花视频在线免费观看 | 91看片黄| 日韩精品一区二区亚洲av性色 | 精品人妻一区二区免费 | 性巴克成人免费网站 | 实拍女处破www免费看 | 伊人久久一区二区 | 欧美网站在线观看 | 成人综合色站 | 小泽玛丽亚在线观看 | 日韩欧美视频一区二区 | 亚洲国产第一区 | 成人在线观看免费高清 | 3d动漫精品啪啪一区二区竹菊 | jzjzjzjzj亚洲成熟少妇 | 国内自拍99 | 88国产精品视频一区二区三区 | 80日本xxxxxxxxx96| 丁香花五月天 |